在linux中安装Hadoop教程-伪分布式配置-Hadoop2.6.0-
Ubuntu14.04
注:该教程转⾃厦门⼤学⼤数据课程学习总结
装好了 Ubuntu 系统之后,在安装 Hadoop 前还需要做⼀些必备⼯作。
创建hadoop⽤户
如果你安装 Ubuntu 的时候不是⽤的 “hadoop” ⽤户,那么需要增加⼀个名为 hadoop 的⽤户。
⾸先按 ctrl+alt+t 打开终端窗⼝,输⼊如下命令创建新⽤户 :
  sudo useradd -m hadoop -s /bin/bash
这条命令创建了可以登陆的 hadoop ⽤户,并使⽤ /bin/bash 作为 shell。
sudo命令  本⽂中会⼤量使⽤到sudo命令。sudo是ubuntu中⼀种权限管理机制,管理员可以授权给⼀些普通⽤户去执⾏⼀些需要root权限执⾏的操作。当使⽤sudo命令时,就需要输⼊您当前⽤户的密码.
密码  在Linux的终端中输⼊密码,终端是不会显⽰任何你当前输⼊的密码,也不会提⽰你已经输⼊了多少字符密码。⽽在windows系统中,输⼊密码⼀般都会以“*”表⽰你输⼊的密码字符
  接着使⽤如下命令设置密码,可简单设置为 hadoop,按提⽰输⼊两次密码:
    sudo passwd hadoop
可为 hadoop ⽤户增加管理员权限,⽅便部署,避免⼀些对新⼿来说⽐较棘⼿的权限问题:
  sudo adduser hadoop sudo
最后注销当前⽤户(点击屏幕右上⾓的齿轮,选择注销),返回登陆界⾯。在登陆界⾯中选择刚创建的 hadoop ⽤户进⾏登陆。
更新apt
⽤ hadoop ⽤户登录后,我们先更新⼀下 apt,后续我们使⽤ apt 安装软件,如果没更新可能有⼀些软件安装不了。按 ctrl+alt+t 打开终端窗⼝,执⾏如下命令:
  sudo apt-get update
后续需要更改⼀些配置⽂件,我⽐较喜欢⽤的是 vim(vi增强版,基本⽤法相同)
  sudo apt-get install vim
安装SSH、配置SSH⽆密码登陆
集、单节点模式都需要⽤到 SSH 登陆(类似于远程登陆,你可以登录某台 Linux 主机,并且在上⾯运⾏命令),Ubuntu 默认已安装了SSH client,此外还需要安装 SSH server:
  sudo apt-get install openssh-server
安装后,配置SSH⽆密码登陆
利⽤ ssh-keygen ⽣成密钥,并将密钥加⼊到授权中:
  exit # 退出刚才的 ssh localhost
  cd ~/.ssh/ # 若没有该⽬录,请先执⾏⼀次ssh localhost
  ssh-keygen -t rsa # 会有提⽰,都按回车就可以
  cat ./id_rsa.pub >> ./authorized_keys # 加⼊授权
此时再⽤ssh localhost命令,⽆需输⼊密码就可以直接登陆了。
安装Java环境
需要按照下⾯步骤来⾃⼰⼿动安装JDK1.8。
我们已经把JDK1.8的安装包放在了百度云盘,(提取码:gx0b)。请把压缩格式的⽂件jdk-8u162-linux-
下载到本地电脑,假设保存在“/home/linziyu/Downloads/”⽬录下。
在Linux命令⾏界⾯中,执⾏如下Shell命令(注意:当前登录⽤户名是hadoop):
1. cd /usr/lib
2. sudo mkdir jvm #创建/usr/lib/jvm⽬录⽤来存放JDK⽂件
3. cd ~ #进⼊hadoop⽤户的主⽬录
4. cd Downloads #注意区分⼤⼩写字母,刚才已经通过FTP软件把JDK安装包上传到该⽬录下
5. sudo tar -zxvf ./ -C /usr/lib/jvm #把JDK⽂件解压到/usr/lib/jvm⽬录下
JDK⽂件解压缩以后,可以执⾏如下命令到/usr/lib/jvm⽬录查看⼀下:
1. cd /usr/lib/jvm
2. ls
可以看到,在/usr/lib/jvm⽬录下有个jdk1.8.0_162⽬录。
下⾯继续执⾏如下命令,设置环境变量:
1. cd ~
2. vim ~/.bashrc
上⾯命令使⽤vim编辑器打开了hadoop这个⽤户的环境变量配置⽂件,请在这个⽂件的开头位置,添加如下⼏⾏内容:
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
保存.bashrc⽂件并退出vim编辑器。然后,继续执⾏如下命令让.bashrc⽂件的配置⽴即⽣效:
1. source ~/.bashrc
这时,可以使⽤如下命令查看是否安装成功:
1. java -version
如果能够在屏幕上返回如下信息,则说明安装成功:
hadoop@ubuntu:~$ java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
⾄此,就成功安装了Java环境。下⾯就可以进⼊Hadoop的安装。
安装 Hadoop 2
我们选择将 Hadoop 安装⾄ /usr/local/ 中:
1. sudo tar -zxf ~/下载/hadoop-
2.6. -C /usr/local # 解压到/usr/local中
2. cd /usr/local/
3. sudo mv ./hadoop-2.6.0/ ./hadoop # 将⽂件夹名改为hadoop
4. sudo chown -R hadoop ./hadoop # 修改⽂件权限
Hadoop 解压后即可使⽤。输⼊如下命令来检查 Hadoop 是否可⽤,成功则会显⽰ Hadoop 版本信息:
1. cd /usr/local/hadoop
2. ./bin/hadoop version
Hadoop伪分布式配置
Hadoop 可以在单节点上以伪分布式的⽅式运⾏,Hadoop 进程以分离的 Java 进程来运⾏,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的⽂件。
Hadoop 的配置⽂件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置⽂件 l 和 l 。Hadoop的配置⽂件是 xml 格式,每个配置以声明 property 的 name 和 value 的⽅式来实现。
修改配置⽂件 l (通过 gedit 编辑会⽐较⽅便: gedit ./etc/l),将当中的
1. <configuration>
2. </configuration>
修改为下⾯配置:
1. <configuration>
2. <property>
3. <name&p.dir</name>
4. <value>file:/usr/local/hadoop/tmp</value>
5. <description>Abase for other temporary directories.</description>
6. </property>
7. <property>
8. <name>fs.defaultFS</name>
9. <value>hdfs://localhost:9000</value>
10. </property>
11. </configuration>
同样的,修改配置⽂件 l:
1. <configuration>
2. <property>
3. <name&plication</name>
4. <value>1</value>
5. </property>
6. <property>
7. <name>dfs.namenode.name.dir</name>
8. <value>file:/usr/local/hadoop/tmp/dfs/name</value>
9. </property>
10. <property>
11. <name>dfs.datanode.data.dir</name>
12. <value>file:/usr/local/hadoop/tmp/dfs/data</value>
13. </property>
14. </configuration>
Hadoop配置⽂件说明
Hadoop 的运⾏⽅式是由配置⽂件决定的(运⾏ Hadoop 时会读取配置⽂件),因此如果需要从伪分布式模式切换回⾮分布式模式,需要删除 l 中的配置项。
此外,伪分布式虽然只需要配置 fs.defaultFS 和 plication 就可以运⾏(官⽅教程如此),不过若没有配置 p.dir 参数,则默认使⽤的临时⽬录为 /tmp/hadoo-hadoop,⽽这个⽬录在重启时有可能被系统清理掉,导致必须重新执⾏ format 才⾏。所以我们进⾏了设置,同时也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。
配置完成后,执⾏ NameNode 的格式化:
1. ./bin/hdfs namenode -format
成功的话,会看到 “successfully formatted” 和 “Exitting with status 0” 的提⽰,若为 “Exitting with status 1” 则是出错。
接着开启 NameNode 和 DataNode 守护进程。
1. ./sbin/start-dfs.sh #start-dfs.sh是个完整的可执⾏⽂件,中间没有空格
启动时可能会出现如下 WARN 提⽰:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable WARN 提⽰可以忽略,并不会影响正常使⽤。
启动 Hadoop 时提⽰ Could not resolve hostname
如果启动 Hadoop 时遇到输出⾮常多“ssh: Could not resolve hostname xxx”的异常情况,如下图所⽰:
启动Hadoop时的异常提⽰
这个并不是 ssh 的问题,可通过设置 Hadoop 环境变量来解决。⾸先按键盘的 ctrl + c中断启动,然后在 ~/.bashrc 中,增加如下两⾏内容(设置过程与 JAVA_HOME 变量⼀样,其中 HADOOP_HOME 为 Hadoop 的安装⽬录):
1. export HADOOP_HOME=/usr/local/hadoop
2. export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
保存后,务必执⾏source ~/.bashrc使变量设置⽣效,然后再次执⾏./sbin/start-dfs.sh启动 Hadoop。
启动完成后,可以通过命令jps来判断是否成功启动,若成功启动则会列出如下进程: “NameNode”、”DataNode” 和“SecondaryNameNode”(如果 SecondaryNameNode 没有启动,请运⾏ sbin/stop-dfs.sh 关闭进程,然后再次尝试启动尝试)。如果没有NameNode 或 DataNode ,那就是配置不成功,请仔细检查之前步骤,或通过查看启动⽇志排查原因。
Hadoop⽆法正常启动的解决⽅法⼀般可以查看启动⽇志来排查原因,注意⼏点:启动时会提⽰形如 “DBLab-XMU: starting namenode, logging to /usr/local/hadoop/logs/hadoop-hadoop-namenode-DBLab-XMU.out”,其中 DBLab-XMU 对应你的机器名,但其实启动⽇志信息是记录在 /usr/local/hadoop/logs/hadoop-hadoop-namenode-DBLab-XMU.log 中,所以应该查看这个后缀为 .log 的⽂件;每⼀次的启动⽇志都是追加在⽇志⽂件之后,所以得拉到最后⾯看,对⽐下记录的时间就知道了。⼀般出错的提⽰在最后⾯,通常是写着 Fatal、Error、Warning 或者 Java Exception 的地⽅。可以在⽹上搜索⼀下出错信息,看能否到⼀些相关的解决⽅法。此外,若是 DataNode 没有启动,可尝试如下的⽅法(注意这会删除 HDFS 中原有的所有数据,如果原有的数据很重要请不要这样做): # 针对 DataNode 没法启动的解决⽅法 ./sbin/stop-dfs.sh # 关闭 rm -r ./tmp # 删除 tmp ⽂件,注意这会删除 HDFS 中原有的所有数据 ./bin/hdfs namenode -format # 重新格式化 NameNode ./sbin/start-dfs.sh # 重启
附加教程: 配置PATH环境变量
在这⾥额外讲⼀下 PATH 这个环境变量(可执⾏echo $PATH查看,当中包含了多个⽬录)。例如我们在主⽂件夹 ~ 中执⾏ls这个命令时,实际执⾏的是/bin/ls这个程序,⽽不是~/ls这个程序。系统是根据 PATH 这个环境变量中包含的⽬录位置,逐⼀进⾏查,直⾄在这些⽬录位置下到匹配的程序(若
没有匹配的则提⽰该命令不存在)。
上⾯的教程中,我们都是先进⼊到 /usr/local/hadoop ⽬录中,再执⾏sbin/hadoop,实际上等同于运⾏/usr/local/hadoop/sbin/hadoop。我们可以将Hadoop 命令的相关⽬录加⼊到 PATH 环境变量中,这样就可以直接通过start-dfs.sh开启 Hadoop,也可以直接通过hdfs访问 HDFS 的内容,⽅便平时的操作。
同样我们选择在 ~/.bashrc 中进⾏设置(vim ~/.bashrc,与 JAVA_HOME 的设置相似),在⽂件最前⾯加⼊如下单独⼀⾏:
ubuntu安装教程
export PATH=$PATH:/usr/local/hadoop/sbin:/usr/local/hadoop/bin
添加后执⾏source ~/.bashrc使设置⽣效,⽣效后,在任意⽬录中,都可以直接使⽤hdfs等命令了。
注:安装的Hadoop版本和JDK版本最好先查⼀下是否适配,JDK版本太⾼或太低可能会造成莫名其妙的问题。