Apache Ambari源码安装
Apache Ambari是Apache Hadoop官方推荐的配置、管理和监控工具。所以我首先尝试了Apache Ambari 2.7.5源码安装的方式,这种安装方式对环境和软件的版本都有要求。我解决了一部分问题,最后卡在:Too many files with unapproved license,没有继续尝试下去。后来我找到一篇帖子,里面涵盖了我遇到的所有问题。https://www.yinxiang.com/everhub/note/cf31361a-f451-416c-bb02-fe132c540f5a
Cloudera Ambari套件安装
接着我尝试用Cloudera Ambari 2.7.5套件安装的方式,但是从2021年1月31日起,Cloudera Ambari和CDH都需要成为Cloudera用户才能下载,也就是不再提供免费下载。
在stackoverflow阅读Apache Ambari源码安装问题的解决方案时,发现用户steven-matison在GitHub提供了一个Demo Data Platform for Ambari项目,包含他自己改造过的Ambari套件的yum源。
我按照他说的步骤成功安装了Ambari,但是在启动NameNode和DataNode的失败,从日志上看是hdfs-client安装失败。到这个阶段,我已经花了接近一天的时间,这让我失去了继续尝试的耐心。
接下来我想找一个非官方提供的标准Ambari的yum源,而不是非标准的yum源,我找到了两篇可能有用的资料。一篇是阿里云对Ambari的安装介绍,包含了组件安装失败后重试的方式,可能可以解决我遇到的hdfs-client安装失败的问题。另一篇是华为云鲲鹏提供的Ambari yum源,不过只包含AArch64(AMD)的版本,没有X86_64(Inter)的版本,整个yum源比较大。下载的过程,我开始尝试直接安装Hadoop集群,过程比较顺利,所以我并没有尝试鲲鹏的yum源。
Apache Hadoop集群安装
我安装的是Apache Hadoop 3.1.1版本,翻了几篇帖子,这个版本和其他软件的兼容性比较好。
安装过程和配置含义的说明参考官方文档:https://hadoop.apache.org/docs/r3.1.1/hadoop-project-dist/hadoop-common/ClusterSetup.html。
配置hostname
准备3台主机,将hostname分别设置为:hdp1、hdp2、hdp3。
第一台主机执行下面命令,其他主机替换实际的hostname。
hostnamectl set-hostname hdp1
配置/etc/hosts
假设三台主机的ip分别是:10.2.1.151、10.2.1.152、10.2.1.153。
每一台主机的/etc/hosts都增加以下配置,通过主机名可以查找到对应主机。
10.2.1.151 hdp110.2.1.152 hdp210.2.1.153 hdp3
配置SSH免密码
第一台主机hdp1执行:
# 生成ssh密钥对ssh-keygen# 将hdp1的ssh公钥追加到~/.ssh/authorized_keys中ssh-copy-id hdp1# 将hdp1的authorized_keys拷贝到hdp2中,hdp2可以通过ssh免密访问hdp1scp ~/.ssh/authorized_keys hdp2:~/.ssh/
第二台主机hdp2执行:
# 生成ssh密钥对ssh-keygen# 将hdp2的ssh公钥追加到~/.ssh/authorized_keys中ssh-copy-id hdp2# 将hdp2的authorized_keys拷贝到hdp3中,hdp3可以通过ssh免密访问hdp1和hdp2scp ~/.ssh/authorized_keys hdp3:~/.ssh/
第三台主机hdp3执行:
# 生成ssh密钥对ssh-keygen# 将hdp3的ssh公钥追加到~/.ssh/authorized_keys中ssh-copy-id hdp3# 将hdp3的authorized_keys拷贝到hdp1中,hdp1可以通过ssh免密访问hdp1、hdp2和hdp3scp ~/.ssh/authorized_keys hdp1:~/.ssh/# 将hdp3的authorized_keys拷贝到hdp2中,hdp2可以通过ssh免密访问hdp1、hdp2和hdp3scp ~/.ssh/authorized_keys hdp2:~/.ssh/
安装Oracle JDK 1.8
从Oracle官方下载JDK 1.8 RPM安装,我使用的版本是1.8.0_301。
安装chrony
chrony用于同步服务器集群的时间。
yum install chronyyum enable chronydyum start chronyd
安装Apache Hadoop
下载hadoop-3.1.1.tar.gz至/usr/local目录,解压,建立软连接ln -s /usr/local/hadoop-3.1.1 /usr/local/hadoop。
创建/etc/profile.d/hadoop.sh,配置环境变量HADOOP_HOME、PATH和其他变量:
export HADOOP_HOME=/usr/local/hadoopexport PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbinexport HDFS_NAMENODE_USER=rootexport HDFS_DATANODE_USER=rootexport HDFS_SECONDARYNAMENODE_USER=rootexport YARN_NODEMANAGER_USER=rootexport YARN_RESOURCEMANAGER_USER=root
生效环境变量,source /etc/profile.d/hadoop.sh。
配置$HADOOP_HOME/etc/hadoop/hadoop-env.sh
需要配置JAVA_HOME,比如我的是:
export JAVA_HOME=/usr/java/jdk1.8.0_301-amd64
配置$HADOOP_HOME/etc/hadoop/workers
workers中配置集群中的所有结点,方便用脚本批量操作,比如统一启动或停止。
hdp1hdp2hdp3
配置$HADOOP_HOME/etc/hadoop/*.site.xml
core-site.xml
<configuration><property><name>fs.defaultFS</name><value>hdfs://hdp1:9000</value></property><property><name>io.file.buffer.size</name><value>131072</value></property></configuration>
yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hdp1</value>
</property>
</configuration>
hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/var/hdp/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/var/hdp/datanode</value>
</property>
</configuration>
启动Apache Hadoop集群
在任意一台主机执行命令:
# 格式化namenode指向的目录,形成分布式文件系统
hdfs namenode -format <cluster_name>
# 启动集群的namenode和datanode服务
start-dfs.sh
# 启动集群的resourcemanager和nodemanager等服务
start-yarn.sh
使用ps aux|grep hadoop查看所有服务启动情况,如果遇到问题,可以通过启动日志分析,日志的默认目录在$HADOOP_HOME/logs。
Web-UI界面
hdfs管理界面:http://hdp1:9870/
yarn管理界面:http://hdp1:8088/
