欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Hadoop2.7.6完全分布式集群搭建

程序员文章站 2022-04-10 22:13:09
1 准备3台客户机(关闭防火墙,设置静态IP,主机名称) 1.1 修改host文件 我们希望三个主机之间都能够使用主机名称的方式相互访问而不是IP,我们需要在hosts中配置其他主机的host。因此我们在三个主机的/etc/hosts下均进行如下配置:1. 打开hosts文件 2. 配置主机host ......

1  准备3台客户机(关闭防火墙,设置静态IP,主机名称)

1.1 修改host文件

我们希望三个主机之间都能够使用主机名称的方式相互访问而不是IP,我们需要在hosts中配置其他主机的host。因此我们在三个主机的/etc/hosts下均进行如下配置:
1. 打开hosts文件

[root@node21 ~]# vi /etc/hosts

2. 配置主机host

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.21 node21
192.168.100.22 node22
192.168.100.23 node23

3. 将配置发送到其他主机(同时在其他主机上配置)

[root@node21 ~]# scp /etc/hosts root@node22:/etc/hosts
[root@node21 ~]# scp /etc/hosts root@node23:/etc/hosts

4. 测试

[root@node21 ~]# ping node21
[root@node21 ~]# ping node22
[root@node21 ~]# ping node23

1.3  添加用户账号

我们在所有的主机下均建立一个账号用来运行hadoop ,并将其添加至sudoers中
创建deng账号的命令如下

[root@node21 ~]# useradd deng    添加用户通过手动输入修改密码
[root@node21 ~]# passwd --stdin deng  更改用户 deng 的密码
123456  passwd: 所有的身份验证令牌已经成功更新。

添加deng组到sudo中,在其中添加下面一行:

[root@node21 ~]# visudo
添加   deng   ALL=(ALL)     ALL

改行意思为,组:deng内的用户允许免密码使用sudo命令
测试:

[root@node21 root]$ su deng
[deng@node21 root]$ sudo 

1.3  配置yum源

yum install wget -y   #安装wget  
mv /etc/yum.repos.d /etc/yum.repos.d.backup4comex   #备份当前的yum源
mkdir /etc/yum.repos.d  #新建空的yum源设置目录
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo  #下载阿里云的yum源配置
yum clean all   #重建缓存
yum makecache  

2   安装jdk1.8,配置环境变量

[deng@node21 ~]# rpm -qa|grep java   #查询是否安装java软件:
[deng@node21 ~]# rpm -e –nodeps 软件包   #如果安装的版本低于1.7,卸载该jdk
[root@node21 opt]# mkdir module
[root@node21 opt]# mkdir tools
在线安装   wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie"  http://download.oracle.com/otn/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.tar.gz
这里使用本地下载然后 xftp上传到  /opt/tools/ 下 
[root@node21 tools]# tar zxvf  jdk-8u171-linux-x64.tar.gz  -C  /opt/module/
[root@node21 module]# mv jdk1.8.0_171 jdk1.8
设置JAVA_HOME  
vi /etc/profile
export  JAVA_HOME=/opt/module/jdk1.8
export  PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/sbin
source  /etc/profile
向其他节点复制jdk
[root@node21 ~]# scp -r /opt/module/jdk1.8 root@node22:`pwd`
[root@node21 ~]# scp -r /opt/module/jdk1.8 root@node23:`pwd`
配置各个主机下jdk的环境变量,由于我的电脑上linux都是新安装的,环境变量相同,因此直接复制到了其他主机上。如果不同的主机的环境变量不同,请手动设置
[root@node21 ~]# scp /etc/profile root@node22:/etc/profile
[root@node21 ~]# scp /etc/profile root@node23:/etc/profile
 在每个主机上都重新编译一下/etc/profile
[root@node21]# source /etc/profile
测试  java -version

 设置SSH免密码登陆

关于ssh免密码的设置,要求每两台主机之间设置免密码,自己的主机与自己的主机之间也要求设置免密码。 这项操作我们可以在deng用户下执行。

[root@node21 ~]# su deng
[root@node21 ~]# ssh-keygen -t rsa
[root@node21 ~]# ssh-copy-id node21
[root@node21 ~]# ssh-copy-id node22
[root@node21 ~]# ssh-copy-id node23

node1与node2为namenode节点要相互免秘钥   HDFS的HA

[root@node22 ~]# ssh-keygen -t rsa
[root@node22 ~]# ssh-copy-id node22
[root@node22 ~]# ssh-copy-id node21
[root@node22 ~]# ssh-copy-id node23

node2与node3为yarn节点要相互免秘钥  YARN的HA

[root@node23 ~]# ssh-keygen -t rsa
[root@node23 ~]# ssh-copy-id node23
[root@node23 ~]# ssh-copy-id node21
[root@node23 ~]# ssh-copy-id node22 

4   安装hadoop配置集群

4.1  安装hadoop,配置环境变量

[root@node21 tools]# tar zxvf hadoop-2.7.6.tar.gz -C /opt/module/
vi /etc/profile
export  HADOOP_HOME=/opt/module/hadoop-2.7.6
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
编译生效  . /etc/profile

4.2  hadoop集群部署规划

           
node21 NameNode     DataNode   NodeManager
node22   SecondaryNameNode DataNode ResourceManager NodeManager
node23     DataNode   NodeManager

 

4.3  修改hadoop安装包/etc/hadoop/下配置文件

4.3.1 修改core-site.xml

[root@node21 hadoop]$ vi core-site.xml

<!-- 指定HDFS中NameNode的地址 -->
	<property>
		<name>fs.defaultFS</name>
        <value>hdfs://node21:9000</value>
	</property>

	<!-- 指定hadoop运行时产生文件的存储目录 -->
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/opt/module/hadoop-2.7.6/data/tmp</value>
	</property>

4.3.2 修改hdfs  包括hadoop-env.sh,hdfs-site.xml,slaves

[root@node21  hadoop]$ vi hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8

[root@node21  hadoop]$ vi hdfs-site.xml
<configuration>	
    <!-- 设置dfs副本数,不设置默认是3个   -->
	<property>
		<name>dfs.replication</name>
		<value>3</value>
	</property>
    <!-- 设置secondname的端口   -->
	<property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>node23:50090</value>
    </property>
</configuration>

[root@node21  hadoop]$ vi slaves
node21
node22
node23

4.3.3  修改Yarn  包括yarn-env.sh,yarn-site.xml

[root@node21 hadoop]$ vi yarn-env.sh
export JAVA_HOME=/opt/module/jdk1.8

[root@node21 hadoop]$ vi yarn-site.xml
<configuration>	
	<!-- reducer获取数据的方式 -->
	<property>
		 <name>yarn.nodemanager.aux-services</name>
		 <value>mapreduce_shuffle</value>
	</property>
	<!-- 指定YARN的ResourceManager的地址 -->
	<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>node22</value>
	</property>
</configuration>	 

4.3.4  修改Mapreduce   包括mapred-env.sh,mapred-site.xml

[root@node21 hadoop]$ vi mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8

[root@node21 hadoop]$ vi mapred-site.xml
<configuration>	
<!-- 指定mr运行在yarn上 -->
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
</configuration>	  

4.3.5  在集群上分发hadoop安装包文件(前面已配置hadoop环境变量)

[root@node21 module]# scp -r hadoop-2.7.6/ root@node22:`pwd`
[root@node21 module]# scp -r hadoop-2.7.6/ root@node23:`pwd`

5  启动集群与测试

5.1 启动集群

如果集群是第一次启动,需要格式化namenode
[root@node21 hadoop-2.7.6]$ hdfs namenode -format

启动HDFS:[root@node21 hadoop-2.7.6]$  start-dfs.sh
[root@node21 hadoop-2.7.6]$ jps
4166 NameNode
4482 Jps
4263 DataNode

[root@node22 hadoop-2.7.6]$ jps
3218 DataNode
3288 Jps

[root@node23 hadoop-2.7.6]$ jps
3221 DataNode
3283 SecondaryNameNode
3364 Jps

启动YARN:注意:Namenode和ResourceManger如果不是同一台机器,不能在NameNode上启动 yarn,应该在ResouceManager所在的机器上启动yarn。
[root@node22 hadoop-2.7.6]$  start-yarn.sh

5.2 集群基本测试

上传文件 
[root@node21 hadoop-2.7.6]$ hadoop fs -mkdir -p /user/deng/input
[root@node21 hadoop-2.7.6]$ hadoop fs -put  wcinput/wc.input /user/root/input

下载文件
[root@node21 hadoop-2.7.6]$ hadoop fs -get /user/root/input/wc.input

5.3 Hadoop启动停止方式

1)各个服务组件逐一启动
分别启动hdfs组件: hadoop-daemon.sh  start|stop  namenode|datanode|secondarynamenode
启动yarn:yarn-daemon.sh  start|stop  resourcemanager|nodemanager

2)各个模块分开启动(配置ssh是前提)常用
start|stop-dfs.sh     start|stop-yarn.sh

3)全部启动(不建议使用)
start|stop-all.sh

5.4 集群时间同步(略)