Hadoop集群搭建

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop集群搭建相关的知识,希望对你有一定的参考价值。

Hadoop集群搭建

Hadoop是Apache软件基金会旗下的一个开源分布式计算平台。以Hadoop分布式文件系统(HDFS,Hadoop Distributed Filesystem)和MapReduce(Google MapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构。

对于Hadoop的集群来讲,可以分成两大类角色:Master和Salve。一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件系统的访问操作;集群中的DataNode管理存储的数据。MapReduce框架是由一个单独运行在主节点上的JobTracker和运行在每个集群从节点的TaskTracker共同组成的。主节点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上。主节点监控它们的执行情况,并且重新执行之前的失败任务;从节点仅负责由主节点指派的任务。当一个Job被提交时,JobTracker接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。

从上面的介绍可以看出,HDFS和MapReduce共同组成了Hadoop分布式系统体系结构的核心。HDFS在集群上实现分布式文件系统,MapReduce在集群上实现了分布式计算和任务处理。HDFS在MapReduce任务处理过程中提供了文件操作和存储等支持,MapReduce在HDFS的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成了Hadoop分布式集群的主要任务。


具体安装步骤如下:

一、安装Linux Centos6.7操作系统,配置网络信息如下,具体步骤略

配置host主机名

[[email protected] ~]# vim /etc/sysconfig/network 

NETWORKING=yes

HOSTNAME=master #另外两台是slave1和slave2

NTPSERVERARGS=iburst

需要重启后才能生效

临时更改主机名的方法是

[[email protected] ~]# hostname master

[[email protected] ~]# bash


配置IP

[[email protected] ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

HWADDR=00:0C:29:72:15:45

TYPE=Ethernet

UUID=9c82314b-32ef-4e1f-af8d-540310fd74c6

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=static

IPADDR=192.168.101.230

NETMASK=255.255.255.0

GATEWAY=192.168.101.254

DNS1=192.168.101.254

DNS2=192.168.100.241

DNS2=8.8.8.8


机器分部信息如下:

192.168.101.230 master

192.168.101.231 slave1

192.168.101.230 slave2


二、添加3台虚拟机hosts文件

slave1和slave2都要添加,hosts文件的作用,它主要用于确定每个结点的IP地址,方便后续master结点能快速查到并访问各个结点

[[email protected] ~]# vim /etc/hosts

#127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

#::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.101.230 master

192.168.101.231 slave1

192.168.101.232 slave2


三、建立hadoop运行账号密码hadoop,三台机器上都需要建立

[[email protected] ~]# useradd hadoop

[[email protected] ~]# passwd hadoop

更改用户 hadoop 的密码 。

新的 密码:

无效的密码: 它基于字典单词

无效的密码: 过于简单

重新输入新的 密码:

passwd: 所有的身份验证令牌已经成功更新


赋予hadoop用户执行所有命令的权限 ,三台主机上都添加

[[email protected] ~]# vim /etc/sudoers

root    ALL=(ALL)        ALL

hadoop  ALL=(ALL)ALL


四、 配置ssh免密码登录

Hadoop在运行中需要远程管理Hadoop守护进程,在Hadoop启动之后,NameNode是通过SSH来启动和停止各个DateNode上的守护进程,这就必须在主从节点之间实现无密码登录执行指令,所以这里使用SSH无密码公钥认证方式,这样NameNode使用SSH无密码登录并启动DateNode进程,同样原理DateNode上也能使用SSH无密码登录到NameNode


(1)SSH无密码登录原理

Master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode | Tasktracker)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。当Master通过SSH连接Salve时,Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端Master复制到Slave上。


(2)确认三台机器安装好OpenSSH的Server和Client

[[email protected] ~]# rpm -qa | grep openssh

openssh-server-5.3p1-112.el6_7.i686

openssh-askpass-5.3p1-112.el6_7.i686

openssh-5.3p1-112.el6_7.i686

openssh-clients-5.3p1-112.el6_7.i686

[[email protected] ~]# rpm -qa | grep  rsync

rsync-3.0.6-12.el6.i686


如果没有安装,使用如下命令进行安装

yum install -y ssh

yum install -y rsync

service sshd restart


确认三台机器的sshd配置文件允许无密码登录

[[email protected] root]$ vi /etc/ssh/sshd_config

去掉注释符号“#”:

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile      .ssh/authorized_keys


(2)hadoop用户Master机器上生成dsa加密方式的密码对,注意:使用hadoop用户登录虚拟机

[[email protected] root]$ whoami

hadoop

生成密钥对,-t 加密类型dsa -P原密码空,-f指定加密后文件keyfile导入到.ssh/id_dsa

[[email protected] root]$ ssh-keygen -t dsa -P ‘‘ -f ~/.ssh/id_dsa  


把公钥文件加入到验证文件中 

[[email protected] root]$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys 


修改权限

[[email protected] ~]$ chomod 700 ~/.ssh

[[email protected] root]$ chmod 600 ~/.ssh/authorized_keys 


测试ssh无密码登录

[[email protected] root]$ ssh localhost  #这里不需要输入密码即可直接登录

Last login: Wed Feb 24 11:50:14 2016 from localhost 


(3)拷贝id_dsa.pub到slave并追加到authorized_keys中

拷贝id_dsa.pub到slave1上/home/hadoop/目录下

[[email protected] ~]$ scp ~/.ssh/id_dsa.pub [email protected]:/home/hadoop/

[email protected]‘s password:

id_dsa.pub                                    100%  603     0.6KB/s   00:00

相同方法拷贝到slave2上,略


hadoop用户首先在两台slave上新建/home/hadoop/.ssh文件

[[email protected] root]$ mkdir ~/.ssh

[[email protected] root]$ ls -la ~/

drwxrwxr-x   2 hadoop hadoop 4096 2月  24 12:07 .ssh

[[email protected] ~]$ pwd;ls

/home/hadoop

id_dsa.pub


(4)追加公钥id_dsa.pub内容到authorized_keys中

[[email protected] ~]$ cat ~/id_dsa.pub >> ~/.ssh/authorized_keys

[[email protected] ~]$ cat ~/id_dsa.pub >> ~/.ssh/authorized_keys


修改文件权限

[[email protected] ~]$ chomod 700 ~/.ssh

[[email protected] ~]$ chmod 600 ~/.ssh/authorized_keys

同样修改slave2机器上.ssh和.ssh/quthorized_key的权限


测试master登录slave机器,可以免密码直接登录了

[[email protected] ~]$ ssh slave1

Last login: Wed Feb 24 13:02:07 2016 from master


到此,hadoop用户可以在master机器上使用ssh免密码登录slave1和slave2,注意,现在需要在slave1和slave2上执行上面的操作,让用户hadoop使用ssh免密码密钥登录master,具体配置省略,最终三台虚拟机之前全部可以通过密钥免密码登录



五、            下载并解压hadoop安装包

六、            配置namenode,修改site文件

七、            配置hadoop-env.sh文件

八、            配置masters和slaves文件

九、            向各节点复制hadoop

十、            格式化namenode

十一、            启动hadoop

十二、      用jps检验各后台进程是否成功启动

十三、      通过网站查看集群情况


本文出自 “daixuan” 博客,请务必保留此出处http://daixuan.blog.51cto.com/5426657/1744586

以上是关于Hadoop集群搭建的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop集群搭建(一主二从)

【大数据】使用Docker搭建Hadoop集群

大数据实战——hadoop集群安装搭建

Hadoop集群搭建(一主二从)

Hadoop集群搭建(一主二从)

Hadoop集群搭建