Apache Hadoop 2.9.2 集群部署
后知后觉 暂无评论

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 集群本文使用三节点进行演示

hostnameIP(仅供参考)Source
hadoop1172.16.16.231NameNode, ResourceManager, NodeManager
hadoop2172.16.16.232SecondaryNameNode, DataNode, NodeManager
hadoop3172.16.16.233DataNode. 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 管理页面

SortAddress
NameNodehttp://hadoop1:50070
DataNodehttp://hadoop2:50075
DataNodehttp://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 NamePackage NameSource Name
zlibzlib-devel/
zstdzstd-devel/
bzip2bzip2-devel/
opensslopenssl-devel/

附录

参考链接

本文撰写于一年前,如出现图片失效或有任何问题,请在下方留言。博主看到后将及时修正,谢谢!
禁用 / 当前已拒绝评论,仅可查看「历史评论」。