CentOS7 手动部署Hadoop集群2.7.2

目的:新项目的一个测试环境,需要手动部署集群,由于之前都是用ambari进行部署,好久没有手动了,因此借此机会整理下部署文档,方便以后查看

环境信息

[root@test-01 ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
主机名IP部署内容
test-01172.18.0.1NameNode、SecondaryNameNode、ResourceManager
test-02172.18.0.2NodeManager、DataNode
test-03172.18.0.3NodeManager、DataNode

部署前提

1、环境初始化(各个节点执行)
包括句柄数,调参

echo -e '* soft nofile 102400\n* hard nofile 102400\n* soft nproc 102400\n* hard nproc 102400' >> /etc/security/limits.conf

2、更改主机名并配置hosts文件
因为之前其他环境部署过ansible,因此此步骤使用ansible直接执行,过程略
更改后/etc/hosts为:

cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.18.0.1 test-01
172.18.0.2 test-02
172.18.0.3 test-03

3、配置SSH免密
a.新建用户组(各个节点执行)

groupadd hadoop

b.新建hdfs用户,其中需设定userID<1000

useradd -u 501 hdfs -g hadoop

c.并使用passwd命令为新建用户设置密码

passwd hdfs 输入新密码

d.用户建好后,用id user命令查看用户信息如下所示

[root@test-01 /tmp]# id hdfs
uid=501(hdfs) gid=1002(hadoop) groups=1002(hadoop)

e.配置root、hdfs免密
以hdfs用户为例配置免密登录:

  • 分别在master和worker上执行
ssh-keygen -t rsa

执行完命令后 在/home/hdfs/.ssh目录下生成如下两个文件

id_rsa 私钥文件
id_rsa.pub 公钥文件

  • 分别在master和worker上执行以下命令
ssh-copy-id -i /home/hdfs/.ssh/id_rsa.pub ${ip}

其中,如果在test-01上执行,则写test-02节点对应的ip

ssh-copy-id -i /home/hdfs/.ssh/id_rsa.pub 172.18.0.1
ssh-copy-id -i /home/hdfs/.ssh/id_rsa.pub 172.18.0.2
ssh-copy-id -i /home/hdfs/.ssh/id_rsa.pub 172.18.0.3
  • 验证是否配置成功
ssh hdfs@test-01
ssh hdfs@test-02
ssh hdfs@test-03

继续为root用户配置免密,步骤略
4、安装jdk
此步骤依然使用ansible进行部署,jdk版本为

[root@test-01]#java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

下载Hadoop并安装(主节点)

cd /opt
wget http://archive.apache.org/dist/hadoop/common/hadoop-2.7.2/hadoop-2.7.2.tar.gz
#下载后解压
tar xf hadoop-2.7.2.tar.gz

配置hadoop-env.sh中jdk信息

cd /opt/hadoop-2.7.2/etc/hadoop
[root@test-01 /opt/hadoop-2.7.2/etc/hadoop]# echo $JAVA_HOME
/opt/java
[root@test-01 /opt/hadoop-2.7.2/etc/hadoop]# vim hadoop-env.sh
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/opt/java

为了方便我们以后开机之后可以立刻使用到Hadoop的bin目录下的相关命令,可以把Hadoop的环境变量加到/etc/profile.d/下

[root@test-01 /etc/profile.d]# cat hadoop.sh 
export HADOOP_HOME=/opt/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin

使得命令配置信息生效,是否生效可以通过

source /etc/profile.d/hadoop.sh
#查看
hadoop version

配置Hadoop分布式集群(主节点)

在hadoop安装目录下创建四个文件夹

mkdir -p current/tmp hdfs hdfs/data hdfs/name

其中:

目录current/tmp,用来存储临时生成的文件
目录/hdfs,用来存储集群数据
目录hdfs/data,用来存储真正的数据
目录hdfs/name,用来存储文件系统元数据

配置hadoop文件
1、修改core-site.xml

cd /opt/hadoop-2.7.2/etc/hadoop/
[root@test-01 /opt/hadoop-2.7.2/etc/hadoop]# vim core-site.xml 
<!-- 添加以下内容 -->
<!-- 指定HDFS老大(namenode)的通信地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://test-01:9000</value>
    </property>
    <!-- 指定hadoop运行时产生文件的存储路径 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/opt/hadoop-2.7.2/current/tmp</value>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>131072</value>
    </property>

变量fs.defaultFS保存了NameNode的位置,HDFS和MapReduce组件都需要它。这就是它出现在core-site.xml文件中而不是hdfs-site.xml文件中的原因。
2、修改mapred-site.xml
默认没有mapred-site.xml文件,需要从模板复制一份

cp mapred-site.xml.template mapred-site.xml
[root@test-01 /opt/hadoop-2.7.2/etc/hadoop]# vim mapred-site.xml
<!--添加如下内容-->
<!-- 通知框架MR使用YARN -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>test-01:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>test-01:19888</value>
    </property>

3、修改hdfs-site.xml

[root@test-01 /opt/hadoop-2.7.2/etc/hadoop]# vim hdfs-site.xml
<!--添加如下内容-->
<!-- 设置namenode存放的路径 -->
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/opt/hadoop-2.7.2/hdfs/name</value>
    </property>
    <!-- 设置datanode存放的路径 -->
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/opt/hadoop-2.7.2/hdfs/data</value>
    </property>
    <!-- 设置hdfs副本数量 -->
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <!-- 设置secondarynamenode的http通讯地址 -->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>test-01:9001</value>
    </property>
    <property>
    <name>dfs.webhdfs.enabled</name>
    <value>true</value>
    </property>

PS:变量dfs.replication指定了每个HDFS数据块的复制次数,即HDFS存储文件的副本个数.我的实验环境只有一台Master和两台Worker(DataNode),所以修改为2。

4、配置yarn-site.xml

[root@test-01 /opt/hadoop-2.7.2/etc/hadoop]# vim yarn-site.xml
<!--添加如下内容-->
<!-- reducer取数据的方式是mapreduce_shuffle -->
        <property>
               <name>yarn.nodemanager.aux-services</name>
               <value>mapreduce_shuffle</value>
        </property>
        <property>
               <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
               <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
        <property>
               <name>yarn.resourcemanager.address</name>
               <value>test-01:8032</value>
       </property>
       <property>
               <name>yarn.resourcemanager.scheduler.address</name>
               <value>test-01:8030</value>
       </property>
       <property>
               <name>yarn.resourcemanager.resource-tracker.address</name>
               <value>test-01:8031</value>
       </property>
       <property>
               <name>yarn.resourcemanager.admin.address</name>
               <value>test-01:8033</value>
       </property>
       <property>
               <name>yarn.resourcemanager.webapp.address</name>
               <value>test-01:8088</value>
       </property>

5、修改slaves内容
将localhost修改成 test-02、 test-03

[root@test-01 /opt/hadoop-2.7.2/etc/hadoop]# vim slaves
test-02
test-03

分发hadoop目录(主节点)

将配置好的hadoop目录分发的其他节点上

cd /opt/
rsync -av hadoop-2.7.2 root@test-02:/opt
rsync -av hadoop-2.7.2 root@test-03:/opt

启动hadoop分布式集群(主节点)

1、在主节点上格式化集群的文件系统

hadoop namenode -format

2、启动集群

cd /opt/hadoop-2.7.2/sbin
[root@test-01 /opt/hadoop-2.7.2/sbin]# ./start-all.sh

3、查看各个节点的进程

jps

可以看到

#test-01:
SecondaryNameNode
NameNode
ResourceManager
#test-02:
DataNode
NodeManager
#test-03:
DataNode
NodeManager

此时分布式的hadoop集群已经搭好了
在浏览器输入:

172.18.0.1:50070
172.18.0.1:8088

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值