Hadoop 一个大数据计算框架,之前写了 3.x 版本的新版本部署教程,本文记录了 2.x 旧版本的部署、测试流程以备不时之需。
Hadoop
基础
推荐使用普通用户进行安装和配置,需要为普通用户开通 sudo 权限,并且使用普通用户和 root 用户对所有节点配置免密认证,方便后续操作。
## 关闭 SELinux
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
## 关闭 Firewalld
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service
小贴士:本文在 Hadoop 2.9.0 ~ 2.9.2 版本上测试通过。具体差异请自行更换路径中的版本号即可。
规划
Hadoop 3 集群本文使用三节点进行演示
hostname | IP(仅供参考) | Source |
---|---|---|
hadoop1 | 172.16.16.231 | NameNode, ResourceManager, NodeManager |
hadoop2 | 172.16.16.232 | SecondaryNameNode, DataNode, NodeManager |
hadoop3 | 172.16.16.233 | DataNode. NodeManager |
修改机器主机名,并配置 hosts
sudo vim /etc/hosts
## 加入以下内容至文件尾部
# Hadoop
172.16.16.231 hadoop1
172.16.16.232 hadoop2
172.16.16.233 hadoop3
下载
下载安装包
wget https://archive.apache.org/dist/hadoop/common/hadoop-2.9.2/hadoop-2.9.2.tar.gz
解压
sudo tar xf hadoop-2.9.2.tar.gz -C /opt/
授权
sudo chown -R $USER:$USER /opt/hadoop-2.9.2/
部署 JDK
安装 oracle java jdk
sudo dnf localinstall jdk-8u333-linux-aarch64.rpm
注意!这里如果是 amd64 架构,那么文件名略有不同,请根据实际情况修改,下文的环境变量路径同理。
配置环境变量
sudo vim /etc/profile.d/hadoop.sh
## 写入以下内容
export JAVA_HOME=/usr/java/default
export HADOOP_HOME=/opt/hadoop-2.9.2
export HADOOP_CONF_DIR=/opt/hadoop-2.9.2/etc/hadoop
export YARN_CONF_DIR=/opt/hadoop-2.9.2/etc/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
生效环境变量或者重新登录终端
## 重载环境变量
source /etc/profile
修改配置
进入产品目录
cd $HADOOP_HOME
a) 修改 etc/hadoop/core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-2.9.2/data</value>
</property>
<property>
<name>hadoop.http.staticuser.user</name>
<value>kane</value>
</property>
</configuration>
b) 修改 etc/hadoop/hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop2:50090</value>
</property>
<property>
<name>dfs.namenode.secondary.https-address</name>
<value>hadoop2:50091</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
c) 修改 etc/hadoop/mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop1:19888</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
</configuration>
d) 修改 etc/hadoop/yarn-site.xml
<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop1</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>${yarn.resourcemanager.hostname}:8032</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.delete.debug-delay-sec</name>
<value>604800</value>
</property>
</configuration>
e) 修改 etc/hadoop/masters
hadoop1
f) 修改 etc/hadoop/slaves
hadoop2
hadoop3
初始化 Hadoop
将配置完毕的产品分发到所有节点上
sudo rsync -av /opt/hadoop-2.9.2 root@hadoop2:/opt/
sudo rsync -av /opt/hadoop-2.9.2 root@hadoop3:/opt/
格式化 NameNode
hdfs namenode -format
启动集群
start-all.sh
检查集群
执行命令查看堆栈是否正常加载
$ jps
71462 NodeManager
75941 NameNode
85542 ResourceManager
集群拉起后可以使用浏览器访问来查看 Hadoop 管理页面
Sort | Address |
---|---|
NameNode | http://hadoop1:50070 |
DataNode | http://hadoop2:50075 |
DataNode | http://hadoop3:50075 |
常见问题
a) 常见 Hadoop 集群管理命令
## 集群状态查询
hdfs dfsadmin -report
## 创建 HDFS 目录并授权
hdfs dfs -mkdir -p /user/hive/warehouse
hdfs dfs -chmod g+w /user/hive/warehouse
hdfs dfs -ls /
b) 使用命令 hadoop checknative
检查原生组件时报错
比如
$ hadoop checknative
Native library checking:
hadoop: true /opt/hadoop-2.9.2/lib/native/libhadoop.so.1.0.0
zlib: true /lib64/libz.so.1
snappy: true /lib64/libsnappy.so.1
zstd : false
lz4: true revision:10301
bzip2: true /lib64/libbz2.so.1
openssl: false Cannot load libcrypto.so (libcrypto.so: cannot open shared object file: No such file or directory)!
其中
Object Name | Package Name | Source Name |
---|---|---|
zlib | zlib-devel | / |
zstd | zstd-devel | / |
bzip2 | bzip2-devel | / |
openssl | openssl-devel | / |
附录
参考链接
本文由 柒 创作,采用 知识共享署名4.0
国际许可协议进行许可。
转载本站文章前请注明出处,文章作者保留所有权限。
最后编辑时间: 2022-12-01 20:12 PM