华为云-基于Ambari构建大数据平台

1第 1 章 搭建学习环境

1.1 工具软件连接

1.1.1xshell 连接工具

打开 xshell 工具,点击连接配置对话框,填写主机名和公网 IP

在用户认证选项卡中,填写登录用户名和密码。

 点 击 OK 之 后 , 在 Sessions 会 话 框 中 , 看 到 刚 刚 创 建 的 session 连 接 djt-0001

 然后双击 djt-0001,即可连接上华为云服务器。

1.1.2FileZilla 连接工具

打开 FileZilla 工具,新建站点取名为 djt-0001 (名字可以自定义),然后右侧协议选择 SFTP
主机、用户和密码根据自己的服务器情况来设置。

 然后点击“连接”,即可登录 djt-0001 服务器,进入 hadoop 用户的根目录。

1.2 操作系统高级设置

1.2.1 创建用户和用户组

新建用户工作组
groupadd hadoop
新建用户同时增加用户组
useradd -g hadoop hadoop

hadoop 用户设置密码
passwd hadoop

 1.2.2 赋予 hadoop 用户 sudo 权限

在工作中一般不会让我们通过 root 用户来操作,因此我们给 hadoop 用于赋予 sudo 权限。

这时会进入 /etc/sudoers 文件的编辑页面,增加如下配置即可:
# 表示 hadoop 用户可以在任何位置运行任何命令
hadoop   ALL=(ALL)   NOPASSWD: ALL
参数解释:
第一个字段: hadoop 表示能使用 sudo 命令的用户;
第二个字段:第一个 ALL 表示允许使用 sudo 的主机,第二个括号里的 ALL 表示使用 sudo
以什么身份来执行命令;
第三个字段:第一个 NOPASSWD 表示使用 sudo 提升权限的时候不用输入密码,第二 ALL
示以 sudo 命令允许执行的命令;
注意:后续操作就用 hadoop 用户。

1.2.3 配置 hostname

检查当前 hostname ,使用命令 hostname -f 或者 hostnamectl ,此时 hostname 0001

永久修改 hostname 执行如下命令
sudo hostnamectl set-hostname djt-0001

配置 hosts 文件
sudo vi /etc/hosts

注意:最前面两行一定不要删除,避免出现各种奇怪的网络问题。另外注意配置的内外 IP
而非公网 IP

通过 hostname ping 通云服务器

 

1.2.4 防火墙设置

通过如下命令禁用防火墙,避免多个节点之间通信受到影响:
# 禁止防火墙开机启动
sudo systemctl disable firewalld
# 关闭防火墙
sudo systemctl stop firewalld
# 查看防火墙状态
sudo systemctl status firewalld

1.2.5 禁用 SELinux

SELinux 是美国国家宇航局开发的 Linux 的安全子系统,一定要禁用掉免得出现各种莫名其妙
的问题。
检查 SELinux 状态:
getenforce

 只要返回的不是 disabled 就说明 SElinux 打开着呢。

临时禁用 ( 不需要重启,但必须操作一下 )
sudo setenforce 0
永久禁用:
sudo vi /etc/selinux/config
SELINUX=enforcing 改为 SELINUX=disabled

 

1.3SSH 免密

Hadoop 大数据集群的相关组件大多依赖 SSH 免密来通过一个节点操作一个大集群,尽管到
目前为止我们还只有 djt-0001 一个节点,我们仍然需要配置一下 hadoop 用户的 SSH 免密。
hadoop 用户登录 djt-0001 ,切换到 hadoop 用户的根目录。

执行如下命令生成 ssh 公钥和私钥: 

将公钥拷贝到认证文件:

 

文件授权:

 

接下来执行一次 djt-0001 自己到自己的 ssh ,第一次 ssh 连接会提示是否继续,直接 yes
可以了,如下图:

 

最后 exit 退出 ssh 连接,然后再连接一次,如果不需要输入密码 SSH 免密就做好了 :

 

1.4 安装 Java

大数据很多组件离不开 Java ,因此我们要提前安装好,这里选择安装 Java 8 的最新稳定版。
首先把安装包 jdk-8u231-linux-x64.tar.gz 上传到 djt-0001 的用户主目录,然后安装 jdk
sudo tar -zxvf jdk-8u231-linux-x64.tar.gz -C /usr/local/
sudo ln -s /usr/local/jdk1.8.0_231/ /usr/local/jdk

 

设置环境变量,在文件末尾添加如下内容:
sudo vi /etc/profile
export JAVA_HOME=/usr/local/jdk
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
使环境变量生效:
source /etc/profile
验证 Java 是否安装成功

 输出如上内容说明 Java 就安装好了。

1.5 准备本地 yum

我们的思路是把 HDP 所需要的 RPM 安装包都下载到本地创建一个本地 yum 源,后续安装就
直接使用本地 yum 源,这样速度比较快,也可以在内网操作。

1.5.1 准备 HDP 相关文件

需要从以下地址下载相关文件:
Ambari 相关安装包:
http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.7.4.0/ambari-2.7.4.0-cent
os7.tar.gz
HDP 安装:
http://public-repo-1.hortonworks.com/HDP/centos7/3.x/updates/3.1.4.0/HDP-3.1.4.0-centos7-r
pm.tar.gz
HDP-UTIL 安装包:
http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.22/repos/centos7/HDP-UTILS-1.1.0.22-c
entos7.tar.gz
HDP-GPL 文件:
http://public-repo-1.hortonworks.com/HDP-GPL/centos7/3.x/updates/3.1.4.0/HDP-GPL-3.1.4.0-c
entos7gpl.tar.gz
使用 FileZilla 上传到 djt-0001 hadoop 用户主目录下即可:

 

1.5.2 安装 Apache

按照如下命令安装并启动 Apache
# 安装 Apache
sudo yum -y install httpd
# Apache 设置为开机启动
sudo systemctl enable httpd
# 启动 Apache
sudo systemctl start httpd
Webui 访问 apache
http://116.63.162.238/

 如果能看到如下界面 Apache 就安装好了。

1.5.3HDP 安装包部署到 Apache

# 移动要所报到 /var/www/html/ 下:
cd /var/www/html/
sudo mv ~/ambari-2.7.4.0-centos7.tar.gz /var/www/html/
sudo mv ~/HDP-3.1.4.0-centos7-rpm.tar.gz /var/www/html/
sudo mv ~/HDP-GPL-3.1.4.0-centos7-gpl.tar.gz /var/www/html/
sudo mv ~/HDP-UTILS-1.1.0.22-centos7.tar.gz /var/www/html/
# 解压缩
sudo tar -zxvf ambari-2.7.4.0-centos7.tar.gz
sudo tar -zxvf HDP-3.1.4.0-centos7-rpm.tar.gz
sudo tar -zxvf HDP-GPL-3.1.4.0-centos7-gpl.tar.gz
sudo tar -zxvf HDP-UTILS-1.1.0.22-centos7.tar.gz
# 安装压缩包清理
sudo rm -r ambari-2.7.4.0-centos7.tar.gz
sudo rm -r HDP-3.1.4.0-centos7-rpm.tar.gz
sudo rm -r HDP-GPL-3.1.4.0-centos7-gpl.tar.gz
sudo rm -r HDP-UTILS-1.1.0.22-centos7.tar.gz
# 更改目录权限
sudo chmod -R ugo+rX /var/www/html/
最终几个 yum 库的 Base URL 如下:
HDP-3.1 yum 本地仓库地址: http://djt-0001/HDP/centos7/3.1.4.0-315/
HDP-3.1-GPL yum 本地仓库地址: http://djt-0001/HDP-GPL/centos7/3.1.4.0-315/
HDP-UTILS-1.1.0.22 yum 本地仓库地址: http://djt-0001/HDP-UTILS/centos7/1.1.0.22/
1.5.4 配置使用本地 yum
djt-0001 节点上的 /etc/yum.repos.d/ 目录下,创建 ambari.repo 文件,添加如下内容:
cd /etc/yum.repos.d/
sudo vi ambari.repo
[ambari-repo]
name=ambari
# 指向 yum 源的地址
baseurl=http://djt-0001/ambari/centos7/2.7.4.0-118/
# 若是 1 将对下载的 rpm 将进行 gpg 的校验,校验密钥就是 gpgkey ,一般自己的 yum 源是不
需要检测的。
gpgcheck=0
#enable=0 是指这个组不可用; enable=1 是指这个组可用;若是没写就默认可用。
enabled=1
验证 HDP 本地 yum 源:
yum repolist

 看到上图效果,就说明本地 yum 源就创建好了。

1.6 安装 MySQL

1.6.1 安装 MySQL

我们要安装 MySQL5.5 之后的版本,这里选择 5.7
安装 MySQL Yum 仓库:
sudo yum -y localinstall
https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

 

安装 MySQL
sudo yum -y install mysql-community-server

 

设置为开机启动:
sudo systemctl enable mysqld
启动 MySQL:
sudo systemctl start mysqld
查看 MySQL 状态:
sudo systemctl status mysqld

 

查看临时 root 临时密码:
sudo grep 'temporary password' /var/log/mysqld.log

 

我们看到随机生成的 root 临时密码是 ( 注意每次随机生成密码不一样,不要死记 )
7yjfp>?Tpz&,
修改 root 密码,先进入 mysql 命令行: mysql -uroot -p 这时会要求输入密码,我们输入上
述临时密码然后回车即可。

 然后按照如下命令把 root 用户的密码改为 root%123

MySQL 常用密码参数:
validate_password_policy :安全强度,默认为中,即 1 ,要求必须包含 数字、符号、大小写
字母,长度至少为 8 位。
validate_password_length :密码最小长度
validate_password_mixed_case_count :至少有大小写字母 n 对,即 2*n
validate_password_number_count :最少数字数量
validate_password_special_char_count :最少符号数量
set global validate_password_policy=0;
set global validate_password_mixed_case_count=0;
set global validate_password_number_count=3;
set global validate_password_special_char_count=0;
set global validate_password_length=3;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root%123';
Exit

 在生产上建议把 root 密码设置的更加复杂,我这里设置的 root 只能本机连接。

1.6.2 安装 MySQL Java 驱动

最后将 MySQL java 驱动 mysql-connector-java-8.0.18.jar 上传到 djt-0001 的用户主目录,并
移动到一个目录下:
sudo mkdir -p /usr/share/java
sudo mv ~/mysql-connector-java-8.0.18.jar /usr/share/java

 我们后面设置 Ambari-Server 时会用到这个驱动包。

1.7 部署 AmbariServer

1.7.1Ambari 架构原理

1.Ambari 介绍
Ambari Hadoop 分布式集群配置管理工具,是由 hortonworks 主导的开源项目,是 apache
基金会的开源项目,已经成为 Hadoop 运维系统中的得力助手。 Ambari 充分利用了一些已有
的优秀开源软件,巧妙地把它们结合起来,使其在分布式环境中做到了集群式服务管理能力、
监控能力、展示能力。
2.Ambari 架构原理
Ambari 框 架 采 用 的 是 Server/Client 的 模 式 , 主 要 由 两 部 分 组 成 : ambari-agent
ambari-server ambari-server 主要管理部署在每个节点上的管理监控程序。 Ambari-agent
署在监控节点上运行的管理监控程序。 ambari-web 作为用户与 Ambari server 交互的。

 

Ambari 提供 Ambari web rest api Ambari shell 三大方式操作集群;
Ambari 将集群的配置、各个服务的配置等信息存在 Ambari server 端的 DB ( 比如可以是
Mysql)
Ambari server Ambari agent 的交流走 RPC ,即 agent server 报告心跳,
server command
通过 response 发回给 agent agent 本地执行命令;
Ambari 有自己的一套监控、告警、镜像服务,以可插拔的形式供上层服务调用;

1.7.1 安装 Ambari Server

djt-0001 上执行如下命令,稍等片刻, ambari-server 就安装好了 .
sudo yum -y install ambari-server

 

1.7.2 创建 Ambari 数据库资源

Ambari 在配置的时候需要 MySQL 来存储数据,因此我们来创建相关数据库资源,进入 MySQL:
mysql -uroot -p
执行如下命令:
set global validate_password_policy=0;
set global validate_password_mixed_case_count=0;
set global validate_password_number_count=3;
set global validate_password_special_char_count=0;
set global validate_password_length=3;
create database ambari;
CREATE USER 'ambari'@'%' IDENTIFIED BY 'bigdata';
GRANT ALL ON ambari.* TO 'ambari'@'%';
FLUSH PRIVILEGES;
use ambari;
source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql;
exit

1.7.3 配置 AmbariServer

执行如下命令开始设置 Ambari-Server:
sudo ambari-server setup
选择是否自定义 ambari-server 的运行用户,我们保持默认 root 用户即可,所以输入 n 并回
车。

 在下图中,我们选择 2,代表自定义 java,然后回车:

 

如下图所示,我们需要指定自己安装的 java 的路径 /usr/local/jdk ,然后回车:

 

如下图提示是否下载并安装 LZO 的包,我们输入 y 并回车:

 

是否进入数据库高级设置,我们输入 y 然后回车:

 

在选择数据库的环节,我们选择 3 也就是 MySQL ,然后回车:

 

MySQL 的相关配置我们均采用默认值,默认用户和 db 都是 ambari ,密码是 bigdata ,然后回
( 它会自动创建 )

 

如下图,我们需要指定 MySQL 的驱动包所在的路径
/usr/share/java/mysql-connector-java-8.0.18.jar ,然后回车:

 

如下图,我们选择可以远程连接该数据库 (y) ,然后回车就配置完毕了。

 

1.8Ambari 部署核心技术组件

1.8.1 启动 Ambari-Sever

djt-0001 上启动 amabri-server ,出现如下界面就启动成功了 .
sudo ambari-server start
如果出现错误,一定要查看日志: vi /var/log/ambari-server/ambari-server.log
遇到的错误:不能启动服务“ REASON: Server not yet listening on http port 8080 after 50 seconds.
Exiting.
原因:由于本地的公网 ip 改变或者不稳定导致的链接不上。
解决:修改 /etc/hosts ,将 hostname 公网 IP 映射改为内网映射。

 

通 过 webui 访 问 Ambari http://116.63.162.238:8080 , 用 户 名 密 码 默 认 是
admin/admin,如果看到如下界面就代表 ambari 真正启动好了。

 常见问题:Ambari 启动正常,没有错误日志,但是通过 http://116.63.162.238:8080

无法访问 Ambari。

原因:
1. 防火墙没有关闭(查看防火墙: sudo systemctl status firewalld
2. 华为云服务 8080 端口没有对外开放
解决:
1.关闭防火墙: sudo systemctl stop firewalld
2.开放华为云服务器 8080 端口
1)进入控制台

 2)进入当前节点

3 )进入安全组

 4)打开“入方向规则”

 勾选常见协议端口 8080

 完成 8080 端口添加

 

1.8.2 部署 Amabri 集群

1. 启动安装向导
如下图所示,点击 Ambari 主界面中的 "Launch Install Wizard", 启动安装向导:

 

2. 集群名称
接下来我们要给集群起个名字,我们就叫做 myclutser ,名字可以随便起,然后点击右下角
”next“ ,如下图所示:

 

3. 版本选择
首先要选择 HDP3.1.4.0 ,因为我们下载的就是这个版本的安装包,已经构建自本地 yum
库,然后要选择 ”Use Local Repository“ ,如下图:

 接着要把滚动条往下拉,把无用的其他操作系统的仓库删掉,如下图所示:

 

最终我们只保留 "readhat7" 的仓库,接下来要把直接部署 yum 本地仓库的地址填进去,同时
不要勾选下面的两个高级选项,如下图:

 

各个仓库的地址参考下表,我们在前面章节部署 yum 本地源时已经见过了。
HDP-3.1 yum 本地仓库地址: http://djt-0001/HDP/centos7/3.1.4.0-315/
HDP-3.1-GPL yum 本地仓库地址: http://djt-0001/HDP-GPL/centos7/3.1.4.0-315/
HDP-UTILS-1.1.0.22 yum 本地仓库地址: http://djt-0001/HDP-UTILS/centos7/1.1.0.22/
4. 注册主机
我们按照下图所示注册主机到 Ambari

 

上面的私钥要拷贝完整,一点也不能少,最后一行也不要换行。
点击右下角按钮开始注册,会弹出提示窗口,点击” CONTINUE “即可:

 这时会自动开始注册,如下图所示。

报 错 : ERROR 2020-09-07 22:58:10,547 main.py:269 - Ambari agent machine hostname
(localhost.localdomain) does not match expected ambari server hostname (djt-0001). Aborting
registration. Please check hostname, hostname -f and /etc/hosts file to confirm your hostname is
setup correctly
解决:修改 /etc/hosts 文件,去掉无关配置

 当看到所有主机都为 Success 状态时就可以点击下一步了,如下图所示:

主机在注册过程中会去各节点检查环境是否有问题,我么可以点击上图的” Click here to see
thewarnings “去查看,例如:

 

这里的警告是云服务器的一些警告,所以不用管它,直接点 close 。然后直接点击右下角的”
NEXT “,这时会弹出窗口,问你有警告是否忽略,我们选择” OK “会自动进入下一步。
5. 选择要安装的服务
Amabri 管大数据的各个组件叫做 Service ,在这一步要选择同时安装的服务,当然我们也可
以先不选后面再选。
在这里我们选择安装下 Hadoop 相关的服务,其余的服务就取消掉对话框的对勾 ( 它默认选了
一堆,一定要去掉,好多用不到 ) ,如下图所示:
在这里要特别注意,在 Ambari Hadoop 被当做多个服务例如 HDFS YARN 等,如果你选择
的服务依赖于其他服务他会提示的,你点击确认后会自动勾选,然后下一步即可
6. 分配 Mater 服务安装到哪些主机
接下来 Ambari 会让你选择 Master 服务要安装到哪些主机,所谓 Master 服务,是指的各个
服务的 Master 服务,例如 HDFS Master 服务就是 namenode ,因为我们就一个节点,所以
保持不动直接下一步:

 

7. 分配 Slave 服务和 Client 安装到哪些主机

 

8. 自定义 Service
接下来是一些自定义 Service 的配置,首先会让你设置一些服务的密码,如下图:
这里要注意,随着前面你选的 Service 的不同,这里也会不同,点击 ”next“ 会让你确认一些服
务的目录,我们先保持默认,直接 ”next“ ,如下图:

 

然后是确认各个 service 运行在操作系统的哪个用户下,我们也保持默认,如下图:

 

点击下一步,会让我们确认其他的配置,我们保持默认直接点 NEXT

注意,这里随着你前面选择的 service 的不同会有很大差异,比如你要选择了 Hive ,它一定
会要你输入 MySQL 相关信息,所以不要死记硬背。
上图中 ADVANCED 爆红,说 ssl.client.keystore.password 密码不匹配,这里面默认设置密
码为 admin 即可。

 

9.Review
Review 环节我们要仔细检查之前的配置,没有问题就点击 ”DEPLOY“ 正式开始部署了,如
下图所示:

 点击 DEPLOY 会开始初始化任务,如下图:

 初始化完就开始部署了。

1.9.4 纳入 Ambari 管理

这一步我们要先把新节点 djt-0002 djt-0003 纳入到 Amabri 进行管理。
切换到 Hosts 界面:

 

在下拉菜单中点击如下按钮:

 

接下来就进入了添加向导,选择要添加的主机名,注意一行一个,输入 Ambari-server 的私
钥, SSH 用户选择 hadoop ,如下图所示,然后下一步。

 接下来进开始在新加的节点上自动安装 ambari-agent 了,如下图,安装完毕之后点下一步。

 

问 题 : 报 错 Host registration aborted. Ambari Agent host cannot reach Ambari Server
'localhost:8080'
解决:
sudo vim /etc/ambari-agent/conf/ambari-agent.ini
# 检查 hostname=xxx 是否是对应的 hostname

 

接下来选择新增节点要安装的服务 (slave 服务 ) ,我们选择在 djt-0002 djt-0003 上安装
DataNode Client ,其余服务后面单独再安装:

 

 配置环节保持默认,如下图:

 

后续 Review 、安装测试、 Summary 环节与之前类似,不再累述,部署完之后,可以看到:

 

10. 部署启动与测试
部署过程需要花较长时间,随时可以看到进度,如下图:

 

在部署完服务之后, Ambari 会自动启动服务并进行冒烟测试,测试通过看到如下界面就代
表成功安装好了,点击 ”NEXT“ 即可:

 

11.Summary
最后一步就是现实一些摘要信息,如下图:

 

直接点击 "complete" 这个部署过程就结束了,会自动进入 Amabri dashboard 的页面:

 

1.8.3 验证集群

经过前面的步骤我们搭建好了 Ambari 的集群,虽然只有一个 djt-0001 节点,但是五脏俱全。
同时,我们也通过 Amabri 部署了 HDFS YARN ,包括 Zookeeper 集群,因此我们可以简单验
证下 HDFS ,直接在 HDFS 上执行如下命令:

 注意:通过 Ambari 部署的 HDFS 的,管理员用户是 hdfs

在本地创建一个 djt.log 日志文件,内容如下所示:

 

hdfs 中创建一个 /test 目录,并将 djt.log 上传至 /test 目录下。

 

hadoop 自带 WordCount 提交到 yarn 集群运行。
sudo -u hdfs yarn jar
/usr/hdp/3.1.4.0-315//hadoop-mapreduce/hadoop-mapreduce-examples-3.1.1.3.1.4.0-315.jar
wordcount /test/djt.log /test/out

 

查看 WordCount 运行结果

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值