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

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.2 建立用户用户账号

我们在所有的主机下均建立一个账号用来运行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配置文件  在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 集群时间同步(略)

猜你喜欢

转载自www.cnblogs.com/frankdeng/p/9047698.html