写点什么

Hadoop 完全分布式环境搭建 (三节点)

作者:指剑
  • 2022-11-30
    重庆
  • 本文字数:4464 字

    阅读完需:约 15 分钟

Hadoop完全分布式环境搭建(三节点)

一、实验机型及架构描述

二、基础环境配置

三、JDK-Hadoop环境配置

四、Hadoop配置文件修改

五、启动hadoop集群(均在adserver操作)

本篇引用文章地址:https://blog.csdn.net/u014454538/article/details/81103986


<h2 id="1">一、实验机型及架构描述</h2>

本次实验采用 3 台 ubuntu16.04 实例进行搭建


<h2 id="2">二、基础环境配置</h2>

修改主机名,网卡名

设置 Ubuntu 16.04 静态 ip 地址,此处仅作方法演示 1.首先查看 IP 地址



修改网卡配置文件,使其成为静态 IP 地址,修改好之后需要重启实例生效$ sudo vi /etc/network/interfaces



修改主机名,此处用


$ sudo hostnamectl set-hostname YOUR_HOSTNAME
复制代码



修改 hosts,配置 fqdn 域名

创建 hadoop 用户,配置免密登录,每个节点都需配置

sudo useradd -d /home/hadoop -m hadoop sudo passwd hadoop echo "hadoop ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/hadoop sudo chmod 0440 /etc/sudoers.d/hadoop
复制代码



配置 ssh 免密登录 ,需先安装 openssh-server(sudo apt get install openssh-server)


ubuntu@adserver:~$ ssh-keygen ubuntu@adserver:~$ ssh-copy-id adserverubuntu@adserver:~$ ssh-copy-id monserverubuntu@adserver:~$ ssh-copy-id osdserver-1
复制代码




ubuntu@adserver:~$ ssh-copy-id -i .ssh/id_rsa.pub hadoop@adserver  ubuntu@adserver:~$ ssh-copy-id -i .ssh/id_rsa.pub hadoop@monserver  ubuntu@adserver:~$ ssh-copy-id -i .ssh/id_rsa.pub hadoop@osdserver-1 
复制代码




<h2 id="3">三、JDK-Hadoop 环境配置</h2>

1、配置 JDK 环境,此处采用 jdk-8u77

下载 JDK jdk-8u77-linux-x64.tar.gzhttps://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html



ubuntu@adserver:~$ ls -lhtotal 173M-rw-rw-r-- 1 ubuntu ubuntu 173M Mar 28 09:11 jdk-8u77-linux-x64.tar.gzubuntu@adserver:~$ tar -zxf jdk-8u77-linux-x64.tar.gz ubuntu@adserver:~$ ls -lhtotal 173Mdrwxr-xr-x 8 ubuntu ubuntu 4.0K Mar 21  2016 jdk1.8.0_77-rw-rw-r-- 1 ubuntu ubuntu 173M Mar 28 09:11 jdk-8u77-linux-x64.tar.gz
复制代码



ubuntu@adserver:~$ sudo mkdir /usr/lib/jdk      ubuntu@adserver:~$ sudo mv jdk1.8.0_77/ /usr/lib/jdk/ubuntu@adserver:~$ sudo ls /usr/lib/jdk/jdk1.8.0_77
复制代码



ubuntu@adserver:~$ sudo vi /etc/profile 添加jdk环境#JDKexport JAVA_HOME=/usr/lib/jdk/jdk1.8.0_77 export JRE_HOME=${JAVA_HOME}/jre  export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  export PATH=${JAVA_HOME}/bin:$PATH
复制代码




2、配置 Hadoop 环境

安装Hadoop-2.7.2下载地址:https://archive.apache.org/dist/hadoop/core/hadoop-2.7.2/hadoop-2.7.2.tar.gz

解压缩:

ubuntu@adserver:~$ tar -zxf hadoop-2.7.2.tar.gz ubuntu@adserver:~$ ls -lh
复制代码


将 hadoop 移动到/usr/local/目录下

添加 Hadoop 环境变量

$ sudo vi /etc/profile
#HADOOPexport HADOOP_HOME=/usr/local/hadoop-2.7.2export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATHexport HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
复制代码



$ vi ~/.bashrc#HADOOPexport HADOOP_HOME=/usr/local/hadoop-2.7.2export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATHexport HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
复制代码



$ source /etc/profile$ source ~/.bashrc$ hadoop version
复制代码



<h2 id="4">四、Hadoop 配置文件修改</h2>

修改 hadoop 配置文件

修改/hadoop-2.7.2/etc/hadoop 目录下的 hadoop-env.sh、yarn-env.sh、slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml

1.在 hadoop 目录下创建 tmp 文件夹及其子目录

ubuntu@adserver:~$ sudo mkdir -p /usr/local/hadoop-2.7.2/tmp/dfs/dataubuntu@adserver:~$ sudo mkdir -p /usr/local/hadoop-2.7.2/tmp/dfs/name
复制代码


修改配置文件:

首先进入对应文件夹

ubuntu@adserver:~$ cd /usr/local/hadoop-2.7.2/etc/hadoop/
复制代码


2.添加 JAVA_HOME 到 Hadoop 环境配置文件

①添加 Java-home 到 hadoop-env.sh
export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_77
复制代码


② 添加 Java-home 到 yarn-env.sh,直接在第一行添加即可
export JAVA_HOME=/usr/lib/jdk/jdk1.8.0_77
复制代码


③ 添加 slave 主机名到 slaves
ubuntu@adserver:/usr/local/hadoop-2.7.2/etc/hadoop$ vi slaves monserverosdserver-1
复制代码


3.修改对应的配置文件

④ 修改 core-site.xml
ubuntu@adserver:/usr/local/hadoop-2.7.2/etc/hadoop$ vi core-site.xml 
复制代码


<configuration></configuration>中添加如下内容


<property>                <name>fs.defaultFS</name>                <value>hdfs://adserver:8020</value>       </property>       <property>               <name>hadoop.tmp.dir</name>               <value>file:/usr/local/hadoop-2.7.2/tmp</value>               <description>Abase for other temporary   directories.</description>       </property>
复制代码


⑤修改 hdfs-site.xml 文件,
ubuntu@adserver:/usr/local/hadoop-2.7.2/etc/hadoop$ vi hdfs-site.xml 
复制代码


<configuration></configuration>中添加如下内容


       <property>                <name>dfs.namenode.secondary.http-address</name>               <value>adserver:50090</value>       </property>     <property>             <name>dfs.namenode.name.dir</name>             <value>file:/usr/local/hadoop-2.7.2/tmp/dfs/name</value>       </property>      <property>              <name>dfs.datanode.data.dir</name>              <value>file:/usr/local/hadoop-2.7.2/tmp/dfs/data</value>       </property>       <property>               <name>dfs.replication</name>               <value>3</value>        </property>        <property>                 <name>dfs.webhdfs.enabled</name>                  <value>true</value>         </property>
复制代码


⑥修改 mapred-site.xml,需要先复制文件为 mapred-site.xml,然后进行修改
ubuntu@adserver:/usr/local/hadoop-2.7.2/etc/hadoop$ cp mapred-site.xml.template mapred-site.xmlubuntu@adserver:/usr/local/hadoop-2.7.2/etc/hadoop$ vi mapred-site.xml
复制代码


<configuration></configuration>中添加如下内容


        <property>                <name>mapreduce.framework.name</name>                <value>yarn</value>        </property>        <property>                <name>mapreduce.jobhistory.address</name>                <value>adserver:10020</value>        </property>        <property>                <name>mapreduce.jobhistory.webapp.address</name>                <value>adserver:19888</value>        </property>
复制代码


⑦、修改 yarn-site.xml
ubuntu@adserver:/usr/local/hadoop-2.7.2/etc/hadoop$ vi yarn-site.xml 
复制代码


<configuration></configuration>中添加如下内容


  <property>    <name>yarn.nodemanager.aux-services</name>    <value>mapreduce_shuffle</value>  </property>  <property>    <name>yarn.resourcemanager.scheduler.address</name>    <value>adserver:8030</value>  </property>  <property>    <name>yarn.resourcemanager.address</name>    <value>adserver:8032</value>  </property>  <property>    <name>yarn.resourcemanager.resource-tracker.address</name>    <value>adserver:8031</value>  </property>  <property>    <name>yarn.resourcemanager.admin.address</name>    <value>adserver:8033</value>  </property>  <property>     <name>yarn.resourcemanager.webapp.address</name>     <value>adserver:8088</value>  </property>
复制代码


4.使用 scp 命令将/etc/hosts 、/etc/profile 、 ~/.bashrc 、 jdk、hadoop 分别分发给 2 台 slave 节点,这里仅作复制到 monserver 的演示

ubuntu@adserver:~$ scp /etc/hosts ubuntu@monserver:~/ubuntu@adserver:~$ scp -r /etc/profile ubuntu@monserver:~/           ubuntu@adserver:~$ scp -r .bashrc  ubuntu@monserver:~/                 ubuntu@adserver:~$ scp -r /usr/local/hadoop-2.7.2/  ubuntu@monserver:~/ubuntu@adserver:~$ scp -r /usr/lib/jdk/  ubuntu@monserver:~/
复制代码





ubuntu@monserver:~$ sudo mv hosts /etc/hostsubuntu@monserver:~$ sudo mv hadoop-2.7.2/ /usr/local/ubuntu@monserver:~$ sudo mv jdk/ /usr/lib/           ubuntu@monserver:~$ sudo update-alternatives --install /usr/bin/java java /usr/lib/jdk/jdk1.8.0_77/bin/java 300 ubuntu@monserver:~$ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jdk/jdk1.8.0_77/bin/javac 300ubuntu@monserver:~$ source /etc/profileubuntu@monserver:~$ source .bashrc     ubuntu@monserver:~$ java -versionubuntu@monserver:~$ hadoop version
复制代码



设置所有节点 hadoop-2.7.2 的文件夹权限为 0777:

设置所有节点 hadoop-2.7.2 的文件夹权限为 0777:

设置所有节点 hadoop-2.7.2 的文件夹权限为 0777:

ubuntu@adserver:~$  sudo chmod -R 0777 /usr/local/hadoop-2.7.2ubuntu@monserver:~$  sudo chmod -R 0777 /usr/local/hadoop-2.7.2ubuntu@osdserver-1:~$  sudo chmod -R 0777 /usr/local/hadoop-2.7.2
复制代码



<h2 id="5">五、启动 hadoop 集群(均在 adserver 操作)</h2>

① 初始化 namenode

ubuntu@adserver:~$ hadoop namenode -format 注意:首次运行需要执行初始化,之后不需要。成功运行,应该返回 Exitting with status 0,提示 Shuting down Namenode at adserver/xxx.xxx.xxx.xx(adserver 的 IP 地址),具体结果如下图所示:


②启动 Hadoop 的守护进程(NameNode, DataNode, ResourceManager 和 NodeManager 等)

A、首先启动 NameNode、SecondaryNameNode、DataNode

在 adserver 节点执行
ubuntu@adserver:~$start-dfs.sh
复制代码


此时 master 节点上面运行的进程有:NameNode、SecondaryNameNode
此时 slave 节点上面运行的进程有:DataNode


B、启动 ResourceManager、NodeManager

$ start-yarn.sh
复制代码


YARN 是从 MapReduce 中分离出来的,负责资源管理与任务调度。YARN 运行于 MapReduce 之上,提供了高可用性、高扩展性
此时 master 节点上面运行的进程有:NameNode、SecondaryNameNode、ResourceManager
slave 节点上上面运行的进程有:DataNode、NodeManager

C、启动 JobHistoryServer

$ mr-jobhistory-daemon.sh start historyserver
复制代码
注:master 节点将会增加一个 JobHistoryServer 进程

注意:多次重启以后,一定要删除每个节点上的 logs、tmp 目录,并重新创建 tmp 目录

查看三台节点运行状态


ubuntu@adserver:~$ jpsubuntu@adserver:~$ ssh monserver "/usr/lib/jdk/jdk1.8.0_77/bin/jps"ubuntu@adserver:~$ ssh osdserver-1 "/usr/lib/jdk/jdk1.8.0_77/bin/jps"   
复制代码




发布于: 刚刚阅读数: 3
用户头像

指剑

关注

InfoQ签约作者 2022-07-13 加入

AWS社区建设者,AWS学生大使,微软学生大使,阿里云签约作者,Info Q签约作者,CSDN博客专家,华为云云享专家

评论

发布
暂无评论
Hadoop完全分布式环境搭建(三节点)_hadoop_指剑_InfoQ写作社区