手把手教你安装Hadoop集群

来源:互联网 发布:json解析代码 编辑:程序博客网 时间:2024/06/06 11:46

实验环境:

Hadoop 1.0.4

Ubuntu 12.04 RTS – amd64

Java-7-openjdk

 

Master:

Lenovo Y480n-i5-3210

Slave:

I5 750 + 4g RAM


安装单节点Hadoop


如要安装Hadoop集群,请在安装前先安装个必须软件:

$sudo apt-get install ssh

假设你已经下好了Hadoop的安装包,解压缩。

注意,如果是需要在后面继续安装hadoop集群,所有节点的hadoop安装路径必须完全一致,这里我使用的是/home/hadoop。/home/hadoop这个路径默认情况下必须要有sudo权限才能做出修改,故后面的文件操作指令前都会加入sudo指令。

然后安装JDK

Java6:

$sudo apt-get install openjdk-6-jdk
Java7:

$sudo apt-get install openjdk-7-jdk

注:如果需要继续安装集群,各结点所使用的Java版本必须一致

然后

$cd /usr/lib/jvm$ls


应该就会看到刚刚所安装的jdk文件夹,如java-7-openjdk-amd64,其中amd64意味着这个是64位版本,如果本机使用的是32位的Linux,此后缀将变为i386。部分用户的jvm文件夹下可能不止一个jdk文件夹,最好点进去看一下里面的内容齐不齐全,以此来判断这个是不是刚刚安装的jdk。现在先记住这个路径/usr/lib/jvm/java-7-openjdk-amd64,后面会用到。


现在进入刚刚解压的hadoop文件夹

$cd /home/hadoop

需要首先编辑一下conf/hadoop-env.sh

$sudo vim hadoop-env.sh

可以看到文件内部有大量的注释,其中有一行是JAVA_HOME的设置代码,取消注释,写下如下代码

Export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64


这里是将环境变量$JAVA_HOME设置为刚刚安装的jdk文件夹

然后打开终端输入如下代码

$export HADOOP_INSTALL=/home/Hadoop$export PATH=$PATH:$HADOOP_INSTALL/bin

这里是设置了Hadoop安装路径的环境变量,同时将其加入PATH,这样就可以运行hadoop了,可在任意路径下输入以下代码验证Hadoop的安装

$hadoop version


至此,hadoop单节点模式安装完毕,可以跑跑Hadoop自带的wordcount案例来测试一下,具体的测试步骤将在本教程最后一部分里详细介绍

 

配置Hadoop集群


假设要架设的Hadoop集群包含以下两个节点:

Mrdai-Laptop            IP:192.168.1.105

Mrdai-PC                   IP:192.168.1.104

其中Mrdai-Laptop为master,Mrdai-PC为slave。同时假设这两台计算机均已安装好相同的hadoop,JDK与ssh。


配置Hosts


首先修改每台计算机的Hosts文件

$sudo vim /etc/hosts
加入下列语句

192.168.1.105    mrdai-Laptop192.168.1.104    mrdai-PC

注意,修改hosts时,IP段的IP别名(即上面的mrdai-Laptop和mrdai-PC)必须与该机的机器名一致。如果不记得机器名可以先打开终端,看到



其中@号前的mrdai为当前用户名,@号后的mrdai-Laptop为当前机器名。

同时,最好把所有节点hosts内localhost一项删去,以免以后发生一些错误


创建Hadoop用户


要让master能够连接上slave,首先每台slave内必须先新建一个用户名与master机root用户用户名一致的用户

首先先创建一个hadoop用户组

$sudo addgroup hadoop

然后创建一个名为hadoop-master的用户,归于hadoop用户组下。注意该用户名必须与master机root用户的用户名一致。

$sudo adduser --ingroup hadoop mrdai

创建新用户时会需要输入新用户密码及用户信息。用户密码不需要与本机root用户密码一致,只要确保master知道就好。用户信息可以为空白。



然后再给该用户组增添sudo权限

$sudo vim /etc/sudoers

在%admin  ALL=(ALL)  ALL下面添加一行

%hadoop   ALL=(ALL)  ALL


OK,Hadoop用户创建完毕

然后需要将slave机上的hadoop文件夹的所有者设置为这个新用户,输入以下指令

$sudo chown –R mrdai:hadoop /home/hadoop$sudo chmod –R 755 /home/hadoop

然后输入$ls –l,在出现的表格的第三列可以看到文件所有者已被修改为新用户mrdai


配置SSH


在完成上面两步后,master机应该是可以通过ssh连接到任意slave机了,在ssh前不妨可以见ping一下,看看有没有问题。然后在master机打开终端输入如下指令进入mrdai-PC机:

$ssh mrdai-PC

然后会提示输入密码,输入的即为刚刚在mrdai-PC机新创建的用户的密码,验证通过后便可以由master机控制mrdai-PC机。

我们在两台机器内输入以下指令生成各自的SSH密钥

$ssh-keygen –t rsa –f ~/.ssh/id_rsa

密钥将位于路径 ~/.ssh下

然后将密钥复制

$cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys


然后回到master机,输入以下指令

$ssh-copy-id –i $HOME/.ssh/id_rsa.pub mrdai@mrdai-PC
执行以上命令将需要输入刚刚新用户的密码

执行完毕后在master机上输入

$ssh mrdai-PC

如果不再提示输入密码,则设置成功。


在master机内设置集群成员名单


进入master机的/home/hadoop,更新conf/masters文件如下

mrdai-Laptop

更新conf/slaves文件如下:

mrdai-Laptopmrdai-PC


配置各机XML相关属性


进入各节点机内,更新下列三个xml文件的configuration标签内的值:

<!-- In: conf/core-site.xml --><property> <name>fs.default.name</name> <value>hdfs://mrdai-Laptop:9000</value>      ------定位文件系统的NameNode</property>

<!-- In: conf/mapred-site.xml --><property> <name>mapred.job.tracker</name> <value>mrdai-Laptop:9001</value>            --------定位JobTrecker所在主节点</property>

<!-- In: conf/hdfs-site.xml --><property> <name>dfs.replication</name> <value>2</value>                            -----------增大HDFS备份参数</property>

注意这里dfs.replication的值即为文件在hdfs内所做副本数,像图中设置为2,那么每次上传新文件就会在hdfs上产生两个副本数据块(尽管使用ls指令只会显示一个)

至此,集群各节点间的准备工作全部完成


开始运行集群


第一次运行集群时,必须先对master机的namenode进行格式化,格式化之前最好现在所有机器上清空hdfs/data和hdfs/name以及/tmp下与hadoop有关的所有文件,以免造成冲突

在master机上运行:

$bin/Hadoop namenode –format
然后再运行

$bin/start-all.sh
即可在所有节点上打开HDFS daemon和MapReduce daemon

可在master和slave机上使用jps命令,查看开启的daemons进程,如果能看到Hadoop的相关进程,代表Hadoop集群构建成功。


注:开启daemons时,master机可能收到各种错误报告。仔细阅读错误报告,便能大致确定是哪台机出了什么问题。如果是频繁提示需要输入密码,那就说明SSH设置有问题,Hadoop本身问题不大。Bin文件夹下除了启动daemons的脚本,也有关闭daemons的脚本,只需要在master机执行对应的脚本便能在整个集群内关闭指定的功能。


测试集群


这里利用的是Hadoop自带的wordcount方法来测试一下Hadoop系统的安装情况,任何模式下的hadoop均可使用该测试方法,指令完全相同

 

首先在dfs中创建input目录:

$bin/Hadoop dfs –mkdir input

将conf中的文件拷贝到dfs中的input,作为后面执行wordcount的输入:

$bin/hadboop dfs –copyFromLocal conf/* input
运行WordCount:

$bin/hadoop jar hadoop-examples-1.0.4.jar wordcount input output
注意,这里输出路径不能已经存在于hdfs内,否则会报错。如果一定要使用这个路径,可以先用dfs的-rmr指令把已有的文件夹删除

注:此处的hadoop-examples-1.0.4.jar在不同版本的hadoop里名字可能不完全相似,最好先在hadoop安装文件夹下看一下,或者直接用hadoop-examples*.jar代替



右侧可以看到,Slave机mrdai-PC也受到master机控制正在进行运算。

显示输出结果文件:

$bin/hadoop dfs –cat output/*

如果能完整跑下来,那说明Hadoop已经成功安装,可以开始各位的开发之旅了。祝好运!


0 0
原创粉丝点击