大数据之Hadoop集群部署

  • A+
所属分类:Big Data

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

大数据之Hadoop集群部署

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

一.环境说明
Hadoop集群中包括3个节点:1个Master,2个Slave,节点之间局域网连接,可以互相ping通,节点地址如下:

系统 主机名 IP地址
Centos 7.3 Master 192.168.2.45
Centos 7.3 Slave1 192.168.2.46
Centos 7.3 Slave2 192.168.2.47

二.环境配置

1.安装依赖包

yum install -y vim wget openssh-clients openssh-server rsync

2.网络配置

把三台主机的ip都改成静态ip,然后保存退出

vim /etc/sysconfig/network-scripts/ifcfg-xxxx

三台主机修改好后,重启服务
systemctl restart network
3.修改主机名

这里我修改了配置文件,暂时不重启服务器,临时让主机名生效

2.45

echo Master > /etc/hostname

2.46

echo Slave1 > /etc/hostname

2.47

echo Slave2 > /etc/hostname

重启服务器

sync;sync;shutdown -r now

4.增加映射

修改三台主机配置添加如下内容

vim /etc/hosts

5.测试

ping Master

ping Slave1

ping Slave2

6.安装Oracle JDK

安装方法

7.创建hadoop用户并添加权限

useradd -m hadoop -s /bin/bash

passwd hadoop

sed -i "91a\hadoop  ALL=(ALL)       ALL" /etc/sudoers

8.SSH无密码登录节点

生成公钥必须在修改主机名以后,如果是之前生成的公钥,修改主机名以后,有可能无效

su hadoop      #切换用户

$ rm -rf ~/.ssh    #删除之前生成的密钥

$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa    #生成新的密钥

$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys   #加入授权

$ chmod 600 ~/.ssh/authorized_keys    #添加权限

9.测试SSH

$ ssh localhost

提示是否确认连接:yes

10.修改SSH配置文件,启用RSA认证

$ sudo sed -i 's/#RSAAuthentication yes/RSAAuthentication yes/' /etc/ssh/sshd_config

$ sudo sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/' /etc/ssh/sshd_config

重启服务

$ sudo systemctl restart sshd

11.配置SSH节点无密码登录,中间会提示是否连接和输入密码

Master

cat ~/.ssh/id_rsa.pub | ssh hadoop@Slave1 'cat - >> ~/.ssh/authorized_keys'

cat ~/.ssh/id_rsa.pub | ssh hadoop@Slave2 'cat - >> ~/.ssh/authorized_keys'

Slave1

cat ~/.ssh/id_rsa.pub | ssh hadoop@Master 'cat - >> ~/.ssh/authorized_keys'

cat ~/.ssh/id_rsa.pub | ssh hadoop@Slave2 'cat - >> ~/.ssh/authorized_keys'

Slave2

cat ~/.ssh/id_rsa.pub | ssh hadoop@Master 'cat - >> ~/.ssh/authorized_keys'

cat ~/.ssh/id_rsa.pub | ssh hadoop@Slave1 'cat - >> ~/.ssh/authorized_keys'

12.SSH测试连接其他节点

ssh Master

ssh Slave1

ssh Slave2

三.Master安装Hadoop

1.下载

$ wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.9.2/hadoop-2.9.2.tar.gz

2.解压

$ sudo mkdir /opt/hadoop

$ sudo tar zxvf hadoop-2.9.2.tar.gz -C /opt/

$ sudo mv /opt/hadoop-2.9.2/ /opt/hadoop

$ sudo chown -R hadoop: /opt/hadoop/

3.配置环境变量

$ sudo vim /etc/profile

使环境变量生效

$ source /etc/profile

4.编辑配置文件hadoop-env.sh
sed -i 's#export JAVA_HOME=${JAVA_HOME}#export JAVA_HOME=/usr/java/jdk1.8.0_161#' /opt/hadoop/etc/hadoop/hadoop-env.sh

5.修改配置文件slaves

默认为 localhost,在伪分布式配置时,节点即作为 NameNode 也作为 DataNode。分布式配置    可以保留 localhost,也可以删掉,让 Master 节点仅作为 NameNode 使用。
Master

6.修改配置文件core-site.xml

$ cd /opt/hadoop/etc/hadoop/

$ vim core-site.xml

7.修改 hdfs-site.xml

dfs.replication 一般设为 3,这里有两个节点,所以这里设置为2

$ vim hdfs-site.xml

8.修改mapred-site.xml

$ cp mapred-site.xml.template mapred-site.xml

$ vim mapred-site.xml

9.修改yarn-site.xml

关于yarn.resourcemanager.hostname这个设置项,如果设置了yarn.resourcemanager.address、yarn.resourcemanager.scheduler.address、yarn.resourcemanager.resource-tracker.address、yarn.resourcemanager.admin.address、yarn.resourcemanager.webapp.address会覆盖yarn.resourcemanager.hostname

10.hadoop配置好后,把Master上的hadoop拷贝到其他机器上

$ cd /opt

$ sudo tar zcvf hadoop.tar.gz  hadoop/

在Master上下载拷贝到节点上

$ scp hadoop.tar.gz hadoop@Slave1:/home/hadoop/

$ scp hadoop.tar.gz hadoop@Slave2:/home/hadoop/

在Slave1和Slave2上解压,并修改属主

$ sudo tar zxvf ~/hadoop.tar.gz -C /opt

$ sudo chown -R hadoop: /opt/hadoop

四.启动Hadoop

1.先关闭防火墙

$ sudo systemctl stop firewalld

2.首次启动需先在Master节点执行 NameNode 的格式化

hdfs namenode -format

大数据之Hadoop集群部署

成功会出现上图,如果出现Exitting with status 1则是出错,需检查配置文件

3.启动Hadoop

Master

$ /opt/hadoop/sbin/start-all.sh

$ /opt/hadoop/sbin/mr-jobhistory-daemon.sh start historyserver

 

大数据之Hadoop集群部署

在Master启动Hadoop也会把两个从节点上的Hadoop启动,可以直接在从Slave1和Slave2上输入jps,查看

4.测试

$ hdfs dfsadmin -report

查看 DataNode 是否正常启动,如果 Live datanodes 不为 0 ,则说明集群启动成功。

5.Web查看节点

另一种简单办法:通过 Web 页面看到查看 DataNode 和 NameNode 的状态:http://master:50070/。如果不成功,可以通过启动日志排查原因。

6.添加开机启动(Master上执行)

sudo echo /opt/hadoop/sbin/start-all.sh /etc/rc.d/rc.local

echo /opt/hadoop/sbin/mr-jobhistory-daemon.sh start historyserver /etc/rc.d/rc.local

五.实例

1.在分布式文件系统上创建测试目录

$ hdfs dfs -mkdir -p /data/hadoop

2.把hadoop的xml文件拷贝到分布式文件系统中

$ hdfs dfs -put /opt/hadoop/etc/hadoop/*.xml /data/hadoop

3.查看文件系统中是否存在我们复制的文件

$ hdfs dfs -ls /data/hadoop

4.登陆Hadoop web查看datanode blocks是否有变化

大数据之Hadoop集群部署

5.运行MapReduce

hadoop jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'

运行时的输出信息会显示 Job 的进度。可能会有点慢,但如果迟迟没有进度,比如 5 分钟都没看到进度,那不妨重启 Hadoop 再试试。若重启还不行,则很有可能是内存不足引起,建议增大虚拟机的内存,或者通过更改 YARN 的内存配置解决。

6.通过web查看任务进度http://masterip:8088/cluster

大数据之Hadoop集群部署

注:本章内容部分转载给力星官方安装说明

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: