Hadoop ubuntu16.04LTS伪分布式环境搭建流程
1 三台服务器配置说明
在阿里云平台购买三台服务器,本部分只使用其中的node001作为伪分布式环境搭建案例。
配置信息:ubuntu16.04LTS 4core 8mem
节点名称 | 公网IP | 私网IP | |
---|---|---|---|
节点1 | node001 | 47.93.223.3 | 172.18.62.211 |
节点2 | node002 | 59.110.173.189 | 172.18.62.209 |
节点3 | node003 | 47.94.0.107 | 172.18.62.210 |
2 伪分布式模式环境搭建(node001)
2.1 关闭防火墙
# 关闭防火墙
ufw disable
# 查看防火墙状态
ufw status
2.2 配置JDK
- 解压到 /usr/local/java
mkdir /usr/local/java
tar -zxvf jdk-8u301-linux-x64.tar.gz -C /usr/local/java
- 配置环境变量
vim /etc/profile
# JAVA环境变量配置
export JAVA_HOME=/usr/local/java/jdk1.8.0_301
export PATH=$JAVA_HOME/bin:$PATH
- 刷新配置
source /etc/profile
- 验证
java -version
2.3 主机环境配置
- 修改主机名
# 查看主机名
hostname
# 修改主机名
vim /etc/hostname
# 重启
reboot
- 映射 IP 地址及主机名
vim /etc/hosts
172.18.62.211 node001 node001
- 免密登录设置
# 1 生成密钥对
ssh-keygen -t rsa
# 2 追加公钥
cat .ssh/id_rsa.pub >> .ssh/authorized_keys
# 3 免密登录验证
ssh node001
# 或者
ssh root@47.93.223.3
2.4 安装 hadoop 3.1.4
Hadoop的三种启动模式分别为:
- 单机模式(独立模式)(Local或Standalone Mode)
- 伪分布式模式(Pseudo-Distrubuted Mode)
- 全分布式集群模式(Full-Distributed Mode)
2.4.1 hadoop包安装
- 解压到 /usr/local/hadoop
mkdir /usr/local/hadoop
tar -zxvf hadoop-3.1.4.tar.gz -C /usr/local/hadoop
- 配置环境变量
vim /etc/profile
# HADOOP环境变量配置
export HADOOP_HOME=/usr/local/hadoop/hadoop-3.1.4
export PATH=$HADOOP_HOME/bin:$PATH
export PATH=$HADOOP_HOME/sbin:$PATH
- 刷新配置
source /etc/profile
- 验证
hadoop
2.4.2 HDFS配置文件修改
- 修改 core-site.xml 文件
<configuration>
<!--指定HDFS中NameNode的地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://node001:9000</value>
</property>
<!--指定Hadoop运行时产生文件的存储目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/hadoop-3.1.4/data/tmp</value>
</property>
</configuration>
- 配置 hadoop-env.sh ,修改其中的JAVA_HOME
export JAVA_HOME=/usr/local/java/jdk1.8.0_301
- 修改 hdfs-site.xml 文件,改变副本拷贝个数
<configuration>
<!--指定HDFS web可以查看文件-->
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<!--指定HDFS副本的数量-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
- 格式化NameNode
hdfs namenode -format
2.4.3 Yarn配置文件修改
- 配置 yarn-env.sh 文件
export JAVA_HOME=/usr/local/java/jdk1.8.0_301
- 配置 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>node001</value>
</property>
</configuration>
- 配置 mapred-env.sh 文件
export JAVA_HOME=/usr/local/java/jdk1.8.0_301
- 配置 mapred-site.xml 文件
- 指定MR运行在YARN上
<configuration>
<!--指定MR运行在YARN上-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!--/usr/local/hadoop/hadoop-3.1.4是我的Hadoop的安装目录,改成你的-->
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop/hadoop-3.1.4</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop/hadoop-3.1.4</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop/hadoop-3.1.4</value>
</property>
</configuration>
2.4.4 添加 root 参数
- 将start-dfs.sh,stop-dfs.sh两个文件顶部添加以下参数
HDFS_NAMENODE_USER=root
HDFS_DATANODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
YARN_RESOURCEMANAGER_USER=root
YARN_NODEMANAGER_USER=root
- start-yarn.sh,stop-yarn.sh顶部也需添加以下参数
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
2.4.5 在开发机添加IP映射(Mac 为例)
sudo vim /etc/hosts
47.93.223.3 node001
2.4.6 基础命令
# 启动集群
start-all.sh
# 关闭集群
stop-all.sh
# 查看进程
jps
2.4.7 测试案例验证搭建是否成功
- 网页验证
- 查看yarn界面
http://47.93.223.3:8088
- 查看hdfs界面
http://47.93.223.3:9870
- wordcount 案例验证
# 1.创建文件夹
hdfs dfs -mkdir -p /usr/yqj/input
# 2.查看文件列表
hdfs dfs -ls /
# 3.将本地 wc.txt 文件上传到hdfs中
hdfs dfs -put wc.txt /usr/yqj/input
# 4.进入hadoop提供案例包的位置
cd /usr/local/hadoop/hadoop-3.1.4/share/hadoop/mapreduce
# 5.执行提供的wordcount案例
hadoop jar hadoop-mapreduce-examples-3.1.4.jar wordcount /usr/yqj/input /usr/yqj/output
- 案例输入文件
- 案例输出文件
3 坑点总结
- 未正常启动 DataNode。
- 原因: format 的文件没有删除干净,导致存在问题。
- 解决办法:删除指定的文件 /usr/local/hadoop/hadoop-3.1.4/data/tmp 重新 format。
- start-all.sh 启动报错,there is no YARN_RESOURCEMANAGER_USER defined。
- 原因:没有在 sh 脚本中设置指定的参数。
- 解决办法:参考2.4.4 ,添加参数。
- 执行 mr 报错,Error: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster
- 原因:在 mapred-site.xml 中缺少 env 的配置。
- 解决办法:在 mapred-site.xml 增加配置。
- 开发机无法查看 hdfs 中的文件。
- 原因:在 hdfs-site.xml 缺少对 webhdfs 参数的配置。另外,开发机没有配置IP映射关系
- 解决办法:在 hdfs-site.xml 添加配置。并在开发机(Mac)的 /etc/hosts 中添加映射。