Hadoop2.2 在Linux下的配置详解
1、环境准备
1.1 java环境准备
由于hadoop需要运行在java环境下,所以,java环境是必须的,需要安装jdk,最好不要用linux上自带的openjdk,需要用oracle官网提供的jdk才行。
下载jdk网址为:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
安装方法请自行参阅官网或者网上资料。
1.2 Hadoop源码准备
Hadoop2.2 源码下载地址为:http://apache.claz.org/hadoop/common/hadoop-2.2.0/
注意图中的几个文件,凡是带有src的都是hadoop2.2的源码文件,是没有编译过的,其中的hadoop-2.2.0.tar.gz是已编译过的文件,不过,该文件是在32位操作系统下的编译文件,在64位系统下是用不了的,所以若是在64位系统下需要重新编译源码文件,生成已编译的hadoop-2.2.0.tar.gz,再开始hadoop的配置,本文不对hadoop的编译流程做赘述,怎么在64位环境下编译hadoop请自行参阅官网,或网上相关资料。
1.3 无密码ssh登陆
Hadoop的namenode节点和datanode节点的访问均是通过ssh,所以在配置hadoop之前需要配置无密码ssh登陆。
我们这里搭建的集群包括三台机器:
Ip地址 |
Host name |
Hadoop集群中的定位 |
操作系统 |
192.168.1.51 |
Ipppc-test-51 |
namenode |
OpenSUSE 11 x64 |
192.168.1.52 |
Ippc-test-52 |
datanode |
OpenSUSE 11 x64 |
192.168.1.54 |
Ippc-test-54 |
datanode |
OpenSUSE 11 x64 |
1.3.1 设置localhost的无密码ssh登陆
在~目录下,会有一个隐藏的.ssh目录,配置localhost无密码ssh登陆过程如下所示:
1、 进入.ssh文件夹
2、 ssh-****** -t rsa 之后一路回 车(产生秘钥)
3、 新建文件authorized_keys。
4、 把id_rsa.pub 追加到授权的 key 里面去(cat id_rsa.pub >> authorized_keys)
5、 重启 SSH 服 务命令使其生效 :service sshd restart。
验证无密码登陆是否成功
发现可以跳过密码输入阶段,无密码本地ssh成功。
然后在其他的机器上进行相同的操作
1.3.2 远程无密码ssh登陆
进入192.168.1.51的.ssh目录,将该目录下的authorized_keys追加到远程机器的.ssh目录下的authorized_keys文件中,具体做法如下:
scp authorized_keys [email protected]:~/.ssh/ authorized_keys_from_51
cat authorized_keys_from_c51 >> authorized_keys
验证一下在192.168.1.51机器上的远程登陆
发现可以无密码登陆。
1.3.3 host设置(这一步也可以跳过)
可以在各个机器之间增加host设置,修改/etc/hosts文件内容如下:
1.3.4 防火墙问题
有关防火墙,这里可以进行设置,开放hadoop所需的端口,为了方便,我们这里将防火墙关闭了。
2、正式配置
2.1 配置前的准备
解压hadoop到相应的用户目录下,这里我们选择root用户,所以将hadoop解压到root的根目录下。
配置之前需要在根目录下新建几个文件夹
~/dfs/name
~/dfs/data
~/tmp
涉及到的hadoop配置文件有7个:
~/hadoop-2.2.0/etc/hadoop/hadoop-env.sh
~/hadoop-2.2.0/etc/hadoop/yarn-env.sh
~/hadoop-2.2.0/etc/hadoop/slaves
~/hadoop-2.2.0/etc/hadoop/core-site.xml
~/hadoop-2.2.0/etc/hadoop/hdfs-site.xml
~/hadoop-2.2.0/etc/hadoop/mapred-site.xml
~/hadoop-2.2.0/etc/hadoop/yarn-site.xml
以上配置文件个别不存在,可以复制相应的template文件获得。
2.2 配置文件的编写
在hadoop中,所以的配置xml文件均是由以下结构组成:
Name节点的值为需要配置的项,value为相应配置项的内容。
配置文件具体信息含义详见官网:
http://hadoop.apache.org/docs/r2.2.0/
配置文件1:hadoop-env.sh
修改JAVA_HOME的值:
配置文件2:yarn-env.sh
修改JAVA_HOME的值
配置文件3:slaves(这个文件保存所有slave节点)
配置文件4:core-site.xml
配置文件5:hdfs-site.xml
配置文件6:mapred-site.xml
配置文件7:yarn-site.xml
2.3 复制到其他节点
这里可以写一个shell脚本来执行复制操作:
我们的集群里面全部是64位操作系统,所以可以直接将192.168.1.51上的hadoop直接复制到192.168.1.52和192.168.1.54机器上
2.4 启动验证
进入安装目录:cd ~/hadoop-2.2.0/
格式化namenode: ./bin/hdfs namenode –format
启动hdfs: ./sbin/start-dfs.sh
此时在192.168.1.51上运行的进程有包括namenode secondarynamenode的进程:
而在192.168.1.52 上运行的进程有包括datanode的进程:
能够证明dfs启动起来了。
给出几个简单的例子:
查看集群状态:./bin/hdfs dfsadmin –report
查看文件块组成: ./bin/hdfsfsck / -files -blocks
查看HDFS: http://192.168.1.51:50070
查看RM: http:// 192.168.1.51:8088
在网页*问的截图如下所示:
3、可能遇到的问题
- 多次格式化namenode之后,可能datanode启动不起来。
解决办法,找到配置文件hdfs-site.xml中的配置项:
清空对应的/root/dfs/data目录的内容,重启hadoop即可
- 启动hadoop之后无法通过网页访问
可能是防火墙拦截了50070端口,关闭防火墙再访问。
4、Hadoop的基本操作
4.1 启动和关闭
启动和关闭的执行脚本均在hadoop目录下的sbin目录下。
Start-dfs.sh
Stop-dfs.sh
4.2 基本操作
执行hadoop shell的命令位于hadoop目录下的bin目录下:
执行文件操作的命令式hadoop
查看文件列表
./hadoop fs –ls –R /user
创建目录
./hadoop fs –mkdir /user/program
删除文件
./hadoop fs –rm /user/program/Hello.java
./haddop fs –rm –R /user
上传文件
./hadoop fs –put /root/Hello.java /usr
下载文件
./hadoop fs –get /user/Hello.java /root
查看文件内容
./hadoop fs –cat /usr/Hello.java
欢迎大家一起讨论交流,我的微信