BigData-Notes/notes/installation/Hadoop集群环境搭建.md
2019-07-02 15:22:07 +08:00

6.6 KiB
Raw Blame History

Hadoop集群环境搭建

一、集群规划
二、前置条件
三、配置免密登录
        3.1 生成密匙
        3.2 免密登录
        3.3 验证免密登录
四、集群搭建
        3.1 下载并解压
        3.2 配置环境变量
        3.3 修改配置
        3.4 分发程序
        3.5 初始化
        3.6 启动集群
        3.7 查看集群
五、提交服务到集群

一、集群规划

这里搭建一个3节点的Hadoop集群其中三台主机均部署DataNodeNodeManager服务但只有hadoop001上部署NameNodeResourceManager服务。

二、前置条件

Hadoop的运行依赖JDK需要预先安装。其安装步骤单独整理至

三、配置免密登录

3.1 生成密匙

在每台主机上使用ssh-keygen命令生成公钥私钥对:

ssh-keygen

3.2 免密登录

hadoop001的公钥写到本机和远程机器的 ~/ .ssh/authorized_key文件中:

ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop001
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop002
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop003

3.3 验证免密登录

ssh hadoop002
ssh hadoop003

四、集群搭建

3.1 下载并解压

下载Hadoop。这里我下载的是CDH版本Hadoop下载地址为http://archive.cloudera.com/cdh5/cdh/5/

# tar -zvxf hadoop-2.6.0-cdh5.15.2.tar.gz 

3.2 配置环境变量

编辑profile文件:

# vim /etc/profile

增加如下配置:

export HADOOP_HOME=/usr/app/hadoop-2.6.0-cdh5.15.2
export  PATH=${HADOOP_HOME}/bin:$PATH

执行source命令,使得配置立即生效:

# source /etc/profile

3.3 修改配置

进入${HADOOP_HOME}/etc/hadoop目录下,修改配置文件。各个配置文件内容如下:

1. hadoop-env.sh

# 指定JDK的安装位置
export JAVA_HOME=/usr/java/jdk1.8.0_201/

2. core-site.xml

<configuration>
    <property>
        <!--指定namenode的hdfs协议文件系统的通信地址-->
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop001:8020</value>
    </property>
    <property>
        <!--指定hadoop集群存储临时文件的目录-->
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/tmp</value>
    </property>
</configuration>

3. hdfs-site.xml

<property>
      <!--namenode节点数据即元数据的存放位置可以指定多个目录实现容错多个目录用逗号分隔-->
    <name>dfs.namenode.name.dir</name>
    <value>/home/hadoop/namenode/data</value>
</property>
<property>
      <!--datanode节点数据即数据块的存放位置-->
    <name>dfs.datanode.data.dir</name>
    <value>/home/hadoop/datanode/data</value>
</property>

4. yarn-site.xml

<configuration>
    <property>
        <!--配置NodeManager上运行的附属服务。需要配置成mapreduce_shuffle后才可以在Yarn上运行MapReduce程序。-->
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <!--resourcemanager的主机名-->
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop001</value>
    </property>
</configuration>

5. mapred-site.xml

<configuration>
    <property>
        <!--指定mapreduce作业运行在yarn上-->
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

5. slaves

配置所有从属节点的主机名或IP地址每行一个。所有从属节点上的DataNode服务和NodeManager服务都会被启动。

hadoop001
hadoop002
hadoop003

3.4 分发程序

将Hadoop安装包分发到其他两台服务器分发后建议在这两台服务器上也配置一下Hadoop的环境变量。

# 将安装包分发到hadoop002
scp -r /usr/app/hadoop-2.6.0-cdh5.15.2/  hadoop002:/usr/app/
# 将安装包分发到hadoop003
scp -r /usr/app/hadoop-2.6.0-cdh5.15.2/  hadoop003:/usr/app/

3.5 初始化

Hadoop001上执行namenode初始化命令

hdfs namenode -format

3.6 启动集群

进入到Hadoop001${HADOOP_HOME}/sbin目录下启动Hadoop。此时hadoop002hadoop003上的相关服务也会被启动:

# 启动dfs服务
start-dfs.sh
# 启动yarn服务
start-yarn.sh

3.7 查看集群

在每台服务器上使用jps命令查看服务进程或直接进入Web-UI界面进行查看端口为50070。可以看到此时有三个可用的Datanode


点击Live Nodes进入,可以看到每个DataNode的详细情况:


接着可以查看Yarn的情况端口号为8088

五、提交服务到集群

提交作业到集群的方式和单机环境完全一致这里以提交Hadoop内置的计算Pi的示例程序为例在任何一个节点上执行都可以命令如下

hadoop jar /usr/app/hadoop-2.6.0-cdh5.15.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.15.2.jar  pi  3  3