这是我参与8月更文挑战的第6天,活动详情查看: 8月更文挑战
一.准备工作
1.实验环境介绍
Ubuntu20.04
JDK:JDK 1.8.0_261
Hadoop:hadoop-2.8.1
MobaXterm
2.安装软件及搭建环境
2.1 下载安装配置JDK
- 四台机器可同步进行.手动下载JDK,解压到指定目录
# 查看当前Java版本
$ java -version
# 更新最新的软件包信息
sudo apt-get update
# 创建目录(/root/apps)
$ mkdir /root/apps
# 解压到指定目录(-C)
$ tar -zxvf jdk-8u261-linux-x64.tar.gz -C /root/apps/
# 将解压后的文件夹重命名
$ mv jdk1.8.0_261 jdk
# 设置环境变量(修改profile的好处是对所有用户都有效)
$ vim /etc/profile
# 进入之后在文件末尾追加以下内容
export JAVA_HOME=/root/apps/jdk
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JRE_HOME=/root/apps/jdk/jre
# 使环境变量即刻生效
$ source /etc/profile
# 通过查看java版本,检查JDK安装是否成功
$ java -version
2.2 下载安装Hadoop
- 四台机器可同步进行
# 手动下载Hadoop或者
$ wget https://archive.apache.org/dist/hadoop/common/hadoop-2.8.1/hadoop-2.8.1.tar.gz
# 解压到指定文件(-C)
$ tar -zxvf hadoop-2.8.1.tar.gz -C /root/apps/
# 查看文件是否完整
ll /root/apps/hadoop-2.8.1
bin:可执行程序的目录
etc:配置文件的目录
sbin:脚本文件的目录
share:提供编程用的jar包
# 设置环境变量
$ vim /etc/profile
# 进入之后在文件末尾追加如下内容:
export HADOOP_HOME=/root/apps/hadoop-2.8.1
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
# 使环境变量生效
$ source /etc/profile
3.其他配置
3.1 网络规划
本文规划搭建4太机器组成集群模式,机器分配:
Master :namenode 管理集群
slave1:secondarynamenode提供计算资源,执行计算任务
slave2:datanode
slave3:datanode
3.2 设置IP和主机的映射
- 修改/etc/hosts,添加IP绑定,并注释掉127.0.1.1(不注释会影响Hadoop集群)
# 127.0.1.1 ld
- 设置IP和主机的映射,这样直接写主机名就可以找到对应的IP IP名 主机名
$ vim /etc/hosts
172.31.32.212 master
172.31.32.211 slave1
172.31.32.210 slave2
172.31.32.209 slave3
4.配置SSH
4.1 安装SSH
$ sudo apt-get install ssh
4.2 SSH设置
- 修改/etc/ssh/sshd_config文件,将以下三项开启yes状态
PermitRootLogin yes
PermitEmptyPasswords yes
PasswordAuthentication yes
- 重启SSH服务
$ service ssh restart
- 这样root用户就可以直接登录,以及为后续SSH免密登录做准备
4.3 配置SSH
# 在A机器生成公钥:
$ ssh-keygen -t rsa #一直回车
# 进入到当前用户的隐藏目录(.ssh)
$ cd ~/.ssh
# 把公钥复制一份,并改名为authorized_keys
$ cp id_rsa.pub authorized_keys
# 这步执行完后,在当前机器执行ssh localhost就可以免密登录本机了,如果本机装有ssh-copy-id 命令,就可以把公钥发给其他机器,这样A机器就可以免密登录其他机器:
$ ssh-copy-id 要免密登录的机器 #输入yes和密码
二. Hadoop部署
5.修改Hadoop配置文件
进入/root/apps/hadoop-2.8.1/etc/hadoop/
5.1 修改hadoop-env.sh文件
- hadoop-env.sh:Hadoop运行用到的环境变量配置文件
$ vim hadoop-env.sh
export JAVA_HOME=/root/apps/jdk(JDK安装目录)
5.2 修改core-site.xml文件
- core-site.xml:Hadoop core的配置项,例如HDFS,MapReduce和yarn常用的I/O配置
- 创建目录:mkdir /root/apps/data
$ vim core-site.xml
<configuration>
<property>
<!-- 指定默认文件系统为HDFS,指定NameNode所在的机器 -->
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
5.3 修改yarn-site.xml文件
- yarn-site.xml:守护进程的配置项,包括资源管理,web应用代理服务器和节点管理器
$ vim yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<!-- 指定ResourceManager所在的机器 -->
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<!--NomeNodeManager获取数据的方式是shuffle-->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<!--指定NomeNodeManage内存大小--> <name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>
<property>
<!--指定NomeNodeManage的CPU核数-->
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>2</value>
</property>
</configuration>
5.4 修改mapred-site.xml文件
- mapred-site.xml:MapReduce守护进程的配置项,包括作业历史服务器
- 进入到/root/apps/hadoop-2.8.1/etc/hadoop/
$ cp mapred-site.xml.template mapred-site.xml
$ vim mapred-site.xml
<configuration>
<!--告诉hadoop以后MR(Map/Reduce)运行在YARN上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
5.5 修改hdfs-site.xml文件
- hdfs-site.xml:HDFS守护进程服务器,包括namenode,辅助namenode和datanode等
$ vim hdfs-site.xml
<configuration>
<property>
<!-- 指定NameNode软件存储元数据的本地目录 -->
<name>dfs.namenode.name.dir</name>
<value>/root/apps/data/name/</value>
</property>
<property>
<!-- 指定DataNode软件存放文件块的本地目录 -->
<name>dfs.datanode.data.dir</name>
<value>/root/apps/data/data</value>
</property>
<property>
<!-- 指定SecondaryNameNode节点为Machine-02 -->
<name>dfs.namenode.secondary.http-address</name>
<value>slave1:50090</value>
</property>
</configuration>
5.6 修改slaves文件
添加集群节点(多机添加多个)
$ vim slaves
slave1
slave2
slave3
6.复制配置好的文件到其他机器
- 在第一台机器(master)上配置测试好后成功启动后,将配置文件等复制到其他机器上,复制这些文件要注意自己的安装路径、版本、机器名等。
6.1 复制配置文件
- 进入到配置文件的位置
for i in {1..3}; do scp /etc/profile slave$i:$PWD;done
6.2 复制安装包
- 每台服务器中的hadoop安装包的目录必须一致, 安装包的配置信息还必须保持一致
for i in {1..3}; do scp -r /root/apps/hadoop-2.8.1/ slave$i:/root/apps/; done
7.检查安装是否成功
7.1 格式化HDFS
- 首次启动HDFS需要先初始化namenode和datanode的存储目录
# 在namenode机器上执行
$ hadoop namenode -format
# 在Datanode机器上执行
$ hadoop datanode -format
7.2 在namenode机器上启动HDFS(master)
/root/apps/hadoop-2.8.1/sbin/start-dfs.sh
7.3 在ResourceManager机器上启动Yarn(master)
/root/apps/hadoop-2.8.1/sbin/start-yarn.sh
mr-jobhistory-daemon.sh start historyserver
7.4 用jps命令分别查看
在namenode机器上执行:jps
在datanode机器上执行:jps
7.5 在windows浏览器查看
- 地址:http://master:50070,可以查看关于HDFS的信息,说明成功启动了HDFS.
- 地址:http://master:8088/,可以查看关于Yarn的信息,说明成功启动 了Yarn
7.6 关闭HDFS,Yarn
/root/apps/hadoop-2.8.1/sbin/stop-dfs.sh
/root/apps/hadoop-2.8.1/sbin/stop-yarn.sh