在RHEL / CentOS 6.5中使用CDH4安装Hadoop多节点集群

Hadoop是Apache开发的开源程序框架,用于处理大数据。它使用HDFS来存储集群中所有datanode上的数据。

Hadoop是被Apache处理大数据开发的开源编程框架。 它使用HDFS(Hadoop分布式文件系统 ),以在所有数据节点的数据存储在集群中的分布方式和MapReduce模型来处理数据。

在CentOS中安装Hadoop多节点集群

安装Hadoop多节点集群

NameNode(NN)是一个主守护进程控制HDFSJobTracker(JT)是MapReduce的发动机主守护进程。

要求

在本教程中,我用两个CentOS的6.3虚拟机“ ”和“ 节点 ”即。 (主节点和节点是我的主机名)。 “主”IP为172.21.17.175和节点IP为“172.21.17.188”。 以下说明也适用于RHEL / CentOS的6.x的版本。

在主
[root@master ~]# hostname
master
[root@master ~]# ifconfig|grep 'inet addr'|head -1
inet addr:172.21.17.175  Bcast:172.21.19.255  Mask:255.255.252.0
节点上
[root@node ~]# hostname
node
[root@node ~]# ifconfig|grep 'inet addr'|head -1
inet addr:172.21.17.188  Bcast:172.21.19.255  Mask:255.255.252.0

首先确保所有群集主机是否有“/ etc / hosts中 ”文件(每个节点上),如果你没有DNS的设置都做。

在主
[root@master ~]# cat /etc/hosts
172.21.17.175 master
172.21.17.188 node
节点上
[root@node ~]# cat /etc/hosts
172.21.17.197 qabox
172.21.17.176 ansible-ground

在CentOS中安装Hadoop Multinode集群

我们使用官方CDH库在集群中的所有主机(主和节点)安装CDH4。

第1步:下载安装CDH存储库

去官方CDH下载页面,抢CDH4(即4.6)版本,也可以使用下面的wget命令下载库并安装它。

在RHEL / CentOS 32位上
# wget http://archive.cloudera.com/cdh4/one-click-install/redhat/6/i386/cloudera-cdh-4-0.i386.rpm
# yum --nogpgcheck localinstall cloudera-cdh-4-0.i386.rpm
在RHEL / CentOS 64位上
# wget http://archive.cloudera.com/cdh4/one-click-install/redhat/6/x86_64/cloudera-cdh-4-0.x86_64.rpm
# yum --nogpgcheck localinstall cloudera-cdh-4-0.x86_64.rpm

在安装Hadoop Multinode集群之前,请根据系统架构,通过运行以下命令之一将Cloudera公用GPG密钥添加到存储库。

## on 32-bit System ##
# rpm --import http://archive.cloudera.com/cdh4/redhat/6/i386/cdh/RPM-GPG-KEY-cloudera
## on 64-bit System ##
# rpm --import http://archive.cloudera.com/cdh4/redhat/6/x86_64/cdh/RPM-GPG-KEY-cloudera

第2步:设置JobTracker和NameNode

接下来,运行以下命令在主服务器上安装和设置JobTracker和NameNode。

[root@master ~]# yum clean all 
[root@master ~]# yum install hadoop-0.20-mapreduce-jobtracker
[root@master ~]# yum clean all
[root@master ~]# yum install hadoop-hdfs-namenode

第3步:设置辅助名称节点

再次,在主服务器上运行以下命令以设置辅助名称节点。

[root@master ~]# yum clean all 
[root@master ~]# yum install hadoop-hdfs-secondarynam

第4步:设置Tasktracker和Datanode

接下来,在除JobTracker,NameNode和辅助节点(或备用节点)NameNode主机(在本例中为节点)之外的所有群集主机(节点)上设置tasktracker和datanode。

[root@node ~]# yum clean all
[root@node ~]# yum install hadoop-0.20-mapreduce-tasktracker hadoop-hdfs-datanode

第5步:设置Hadoop客户端

您可以在单独的机器上安装Hadoop客户端(在这种情况下,我已将其安装在datanode上,您可以将其安装在任何机器上)。

[root@node ~]# yum install hadoop-client

第6步:在节点上部署HDFS

现在,如果我们完成了上面的步骤,我们继续部署hdfs(要在所有节点上完成)。

复制默认配置到/ etc / Hadoop的目录(在集群的每个节点上)。

[root@master ~]# cp -r /etc/hadoop/conf.dist /etc/hadoop/conf.my_cluster
[root@node ~]# cp -r /etc/hadoop/conf.dist /etc/hadoop/conf.my_cluster

使用替代命令来设置自定义的目录,(在群集中的每个节点上),如下所示。

[root@master ~]# alternatives --verbose --install /etc/hadoop/conf hadoop-conf /etc/hadoop/conf.my_cluster 50
reading /var/lib/alternatives/hadoop-conf
[root@master ~]# alternatives --set hadoop-conf /etc/hadoop/conf.my_cluster
[root@node ~]# alternatives --verbose --install /etc/hadoop/conf hadoop-conf /etc/hadoop/conf.my_cluster 50
reading /var/lib/alternatives/hadoop-conf
[root@node ~]# alternatives --set hadoop-conf /etc/hadoop/conf.my_cluster

第7步:自定义配置文件

现在,在集群中的每个节点上打开“ 核心-site.xml中 ”文件和更新“fs.defaultFS”。

[root@master conf]# cat /etc/hadoop/conf/core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master/</value>
</property>
</configuration>
[root@node conf]# cat /etc/hadoop/conf/core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master/</value>
</property>
</configuration>

集群中的每个节点在下次更新“dfs.permissions.superusergroup”HDFS-site.xml中

[root@master conf]# cat /etc/hadoop/conf/hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/var/lib/hadoop-hdfs/cache/hdfs/dfs/name</value>
</property>
<property>
<name>dfs.permissions.superusergroup</name>
<value>hadoop</value>
</property>
</configuration>
[root@node conf]# cat /etc/hadoop/conf/hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/var/lib/hadoop-hdfs/cache/hdfs/dfs/name</value>
</property>
<property>
<name>dfs.permissions.superusergroup</name>
<value>hadoop</value>
</property>
</configuration>

注意 :请确认,上述配置是目前所有节点(做一个节点,运行SCP上的其余节点复制)上。

第8步:配置本地存储目录

在NameNode(在主节点和节点上)的“hdfs-site.xml”中更新“dfs.name.dir或dfs.namenode.name.dir”。 请更改突出显示的值。

[root@master conf]# cat /etc/hadoop/conf/hdfs-site.xml
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///data/1/dfs/nn,/nfsmount/dfs/nn</value>
</property>
[root@node conf]# cat /etc/hadoop/conf/hdfs-site.xml
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///data/1/dfs/dn,/data/2/dfs/dn,/data/3/dfs/dn</value>
</property>

第9步:创建目录和管理权限

执行以下命令创建目录结构并管理Namenode(主)和Datanode(Node)机器上的用户权限。

[root@master]# mkdir -p /data/1/dfs/nn /nfsmount/dfs/nn
[root@master]# chmod 700 /data/1/dfs/nn /nfsmount/dfs/nn
[root@node]#  mkdir -p /data/1/dfs/dn /data/2/dfs/dn /data/3/dfs/dn /data/4/dfs/dn
[root@node]#  chown -R hdfs:hdfs /data/1/dfs/nn /nfsmount/dfs/nn /data/1/dfs/dn /data/2/dfs/dn /data/3/dfs/dn /data/4/dfs/dn

通过发出以下命令格式化Namenode(在主机上)。

[root@master conf]# sudo -u hdfs hdfs namenode -format

第10步:配置Secondary NameNode

下面的属性添加到HDFS-site.xml文件和主如图所示取代的价值。

<property>
<name>dfs.namenode.http-address</name>
<value>172.21.17.175:50070</value>
<description>
The address and port on which the NameNode UI will listen.
</description>
</property>

:在我们的例子值应该是主虚拟机的IP地址。

现在让我们部署MRv1(Map-reduce版本1)。 打开“mapred-site.xml中 '文件,如下面的值。

[root@master conf]# cp hdfs-site.xml mapred-site.xml
[root@master conf]# vi mapred-site.xml
[root@master conf]# cat mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:8021</value>
</property>
</configuration>

接着,使用以下scp命令'mapred-site.xml中 '文件复制到节点机。

[root@master conf]# scp /etc/hadoop/conf/mapred-site.xml node:/etc/hadoop/conf/
mapred-site.xml                                                                      100%  200     0.2KB/s   00:00

现在配置由MRv1 Daemon使用的本地存储目录。 如下图所示每个TaskTracker共同再次打开“mapred-site.xml中 '文件并进行更改。

<property>
 <name>mapred.local.dir</name>
 <value>/data/1/mapred/local,/data/2/mapred/local,/data/3/mapred/local</value>
</property>

“mapred-site.xml中 ”文件中指定这些目录后,必须创建目录并分配集群中的每个节点上正确的文件权限给他们。

mkdir -p /data/1/mapred/local /data/2/mapred/local /data/3/mapred/local /data/4/mapred/local
chown -R mapred:hadoop /data/1/mapred/local /data/2/mapred/local /data/3/mapred/local /data/4/mapred/local

第10步:启动HDFS

现在运行以下命令在集群中的每个节点上启动HDFS。

[root@master conf]# for x in `cd /etc/init.d ; ls hadoop-hdfs-*` ; do sudo service $x start ; done
[root@node conf]# for x in `cd /etc/init.d ; ls hadoop-hdfs-*` ; do sudo service $x start ; done

第1步1:创建HDFS / tmp和MapReduce / var目录

这需要创建下面正是因为提到适当的权限/ tmp中

[root@master conf]# sudo -u hdfs hadoop fs -mkdir /tmp
[root@master conf]# sudo -u hdfs hadoop fs -chmod -R 1777 /tmp
[root@master conf]# sudo -u hdfs hadoop fs -mkdir -p /var/lib/hadoop-hdfs/cache/mapred/mapred/staging
[root@master conf]# sudo -u hdfs hadoop fs -chmod 1777 /var/lib/hadoop-hdfs/cache/mapred/mapred/staging
[root@master conf]# sudo -u hdfs hadoop fs -chown -R mapred /var/lib/hadoop-hdfs/cache/mapred

现在验证HDFS文件结构。

[root@node conf]# sudo -u hdfs hadoop fs -ls -R /
drwxrwxrwt   - hdfs hadoop          	0 2014-05-29 09:58 /tmp
drwxr-xr-x   	- hdfs hadoop          	0 2014-05-29 09:59 /var
drwxr-xr-x  	- hdfs hadoop          	0 2014-05-29 09:59 /var/lib
drwxr-xr-x   	- hdfs hadoop         	0 2014-05-29 09:59 /var/lib/hadoop-hdfs
drwxr-xr-x   	- hdfs hadoop          	0 2014-05-29 09:59 /var/lib/hadoop-hdfs/cache
drwxr-xr-x   	- mapred hadoop          0 2014-05-29 09:59 /var/lib/hadoop-hdfs/cache/mapred
drwxr-xr-x   	- mapred hadoop          0 2014-05-29 09:59 /var/lib/hadoop-hdfs/cache/mapred/mapred
drwxrwxrwt   - mapred hadoop          0 2014-05-29 09:59 /var/lib/hadoop-hdfs/cache/mapred/mapred/staging

你启动后HDFS和创建“/ tmp目录 ”,但在启动前的JobTracker请建立由“mapred.system.dir”参数中指定的HDFS目录(默认为$ {} hadoop.tmp.dir / mapred /系统及变化所有者映射。

[root@master conf]# sudo -u hdfs hadoop fs -mkdir /tmp/mapred/system
[root@master conf]# sudo -u hdfs hadoop fs -chown mapred:hadoop /tmp/mapred/system

第1步2:启动MapReduce

要启动MapReduce:请启动TT和JT服务。

在每个TaskTracker系统上
[root@node conf]# service hadoop-0.20-mapreduce-tasktracker start
Starting Tasktracker:                               [  OK  ]
starting tasktracker, logging to /var/log/hadoop-0.20-mapreduce/hadoop-hadoop-tasktracker-node.out
在JobTracker系统上
[root@master conf]# service hadoop-0.20-mapreduce-jobtracker start
Starting Jobtracker:                                [  OK  ]
starting jobtracker, logging to /var/log/hadoop-0.20-mapreduce/hadoop-hadoop-jobtracker-master.out

接下来,为每个hadoop用户创建一个主目录。 建议您在NameNode上执行此操作; 例如。

[root@master conf]# sudo -u hdfs hadoop fs -mkdir  /user/<user>
[root@master conf]# sudo -u hdfs hadoop fs -chown <user> /user/<user>

:其中 是每个用户的Linux用户名。

或者,您可以如下创建主目录。

[root@master conf]# sudo -u hdfs hadoop fs -mkdir /user/$USER
[root@master conf]# sudo -u hdfs hadoop fs -chown $USER /user/$USER

第1步3:从浏览器中打开JT,NN UI

打开浏览器,键入URL作为HTTP:// ip_address_of_namenode:50070访问的Namenode。

Hadoop NameNode接口

Hadoop NameNode接口

在浏览器中打开另一个选项卡,然后键入URL作为HTTP:// ip_address_of_jobtracker:50030访问JobTracker的。

Hadoop映射/减少管理

Hadoop映射/减少管理

这个程序在RHEL / CentOS的5.X / 6.X试验成功。 请在下面评论如果你面临任何安装问题,我会帮助你解决方案。