目 录
1 前言 1
2 实验环境 1
2.1 Ambari简介 1
2.2 HDP平台架构 1
2.3 网络架构 2
3 准备环境 2
3.1 准备镜像 2
3.2 准备HDP环境 4
3.3 准备本地YUM源 6
4 安装MySql 8
5 部署AmbariServer 9
5.1 安装AmbariServer 9
5.2 创建Ambari数据库 9
5.3 配置AmbariServer 10
5.4 启动Ambari-Sever 11
5.5 登录Ambari-Sever 11
5.6 创建HDP集群 11
5.7 验证集群 16
6 添加其它服务 16
6.1 添加HBase 17
6.2 添加Hive 17
7 服务自启动 19
8 遐想点滴 19
分布式存储应用
(大数据平台HDP搭建)
营销工程部/元工
修订:2022.08.01
前言
背景:通过《系列1:容器化部署分布式系统》的虚拟环境学习,大家对分布式存储系统本身应该有了更好理解和感觉;为了进一步提升和延续,《系列2》将围绕分布式存储应用进行一番探试。
目标:分布式存储可为应用系统提供对象、文件、大数据、块等四大类存储服务和接口,由于对象、文件服务在《系列1》中已捎带了;而大数据是分布式存储的一个主要应用场景,需要知识准备也相对较多,因此本期计划从大数据平台搭建开始,带领大家先熟悉一下大数据平台和功能。
要求:对Linux、VMware workstaion、大数据有一定的熟悉,以及《系列1》类似的实践经验。
下期预告:
- 第1期:分布式存储应用(大数据平台HDP搭建), [元工]
- 第2期:分布式存储应用(大数据平台HDP之操作实践), [元工]
实验环境
Ambari简介
Ambari 和 Hadoop 等开源软件一样,也是 Apache Software Foundation 中的一个项目,并且是顶级项目。它主要用来创建、管理、监视 Hadoop 的集群,这里的 Hadoop 是广义的,指 Hadoop 整个生态圈(例如 Hive,Hbase,Sqoop,Zookeeper 等),而并不是特指 Hadoop。简单的说,Ambari 就是为了让 Hadoop 以及相关的大数据软件更容易使用的一个工具。
HDP平台架构
HDP全称叫做Hortonworks Data Platform。Hortonworks数据平台是一款基于Apache Hadoop的是开源数据平台,提供大数据云存储,大数据处理和分析等服务。该平台是专门用来应对多来源和多格式的数据,并使其处理起来能变成简单、更有成本效益。HDP还提供了一个开放,稳定和高度可扩展的平台,使得更容易地集成Apache Hadoop的数据流业务与现有的数据架构。该平台包括各种的Apache Hadoop项目以及Hadoop分布式文件系统(HDFS)、MapReduce、Pig、Hive、HBase、Zookeeper和其他各种组件,使Hadoop的平台更易于管理,更加具有开放性以及可扩展性。其平台架构如下图所示:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5yNhZjMhBjM4Q2MxM2LcBTMyIDMy8CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
网络架构
考虑到后面集成方案的实验需求,本期最后将大数据平台HDP部署在一台虚拟机dk01节点上。网络拓扑如下图所示:
准备环境
准备镜像
1)克隆虚拟机dk01
参考《系列1》第1期的章节3.1的介绍,不再赘述。 |
2)优化
// 停用docker 服务,减少资源占用 [root@dk01 ~]# systemctl stop docker [root@dk01 ~]# systemctl disable docker [root@dk01 ~]# reboot [root@dk01 ~]# systemctl status docker // 修改主机名 [root@dk01 ~]# hostnamectl set-hostname node1 && bash // 修改hosts [root@node1 ~]# vim /etc/hosts 192.168.66.31 node1 192.168.66.32 node2 192.168.66.33 node3 192.168.66.34 node4 //地址 [root@node1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 ... IPADDR="192.168.66.31" ... // 重启网络服务 [root@node1 ~]# systemctl restart network // 查看内存占用 //禁用kdump减少内存占用 [root@node1 ~]# systemctl stop kdump.service [root@node1 ~]# systemctl disable kdump.service //重启后生效 [root@node1 ~]# reboot // 查看结果,释放了20M // 优化ssh,减少登录等待的5秒钟 [root@node1 ~]# vim /etc/ssh/sshd_config 查找GSSAPIAuthentication 赋值为no 查找UseDNS,赋值为 no // 重启sshd服务使生效 [root@node1 ~]# systemctl restart sshd |
准备HDP环境
1)创建hadoop用户
[root@node1 ~]# useradd hadoop [root@node1 ~]# passwd hadoop hjy12345 |
2)赋予sudo权限和免密
// 修改/etc/sudoers文件的配置: [root@node1 ~]$ visudo ## ## Allow root to run any commands anywhere root ALL=(ALL) ALL hadoop ALL=(ALL) NOPASSWD: ALL ... ## Allows people in group wheel to run all commands #%wheel ALL=(ALL) ALL |
3)umask设置:umask用于设置创建新文件或文件夹时授予的默认权限。umask值022授予755权限;值027授予750权限。Ambari,HDP和HDF要求umask值为022(等价于0022)或027(等价于0027)。
// 查看当前用户的umask值 // 修改配置文件:在最后一行添加:umask 022 [hadoop@node1 ~]$ sudo vim /etc/profile // 使环境变量生效 [hadoop@node1 ~]$ source /etc/profile // 查看结果 |
4)文件描述符配置:Linux对每个进程能打开的文件数进行限制(某用户下某进程),Hadoop组件一般都会打开大量的文件,因此要调大相关参数。
// 查看当前用户下一个进程能打开的文件数 [hadoop@node1 ~]$ ulimit -Sn [hadoop@node1 ~]$ ulimit -Hn // 如果小于10000就需要加大,但hard limit不能大于/proc/sys/fs/nr_open,否则注销后将无法正常登录。 // 查看nr_open数值 [hadoop@node1 ~]$ cat /proc/sys/fs/nr_open 1048576 // 修改配置 [hadoop@node1 ~]$ sudo vim /etc/security/limits.conf # * soft nofile 655350 * hard nofile 655350 // 重启系统使之生效 [hadoop@node1 ~]$ sudo reboot |
5)SSH免密
// 生成公、私钥对 [hadoop@node1 ~]$ ssh-keygen [hadoop@node1 ~]$ cd .ssh/ [hadoop@node1 .ssh]$ cat id_rsa.pub >> authorized_keys [hadoop@node1 .ssh]$ chmod 700 ~/.ssh [hadoop@node1 .ssh]$ chmod 600 ~/.ssh/authorized_keys // 查看结果 // 免密测试 [hadoop@node1 ~]$ ssh node1 |
6)安装java
// 解压 [hadoop@node1 ~]$ sudo tar -zxvf jdk-8u231-linux-x64.tar.gz -C /usr/local/ // 创建软链接 [hadoop@node1 ~]$ sudo ln -s /usr/local/jdk1.8.0_231/ /usr/local/jdk // 清理安装包 [hadoop@node1 ~]$ sudo rm ~/jdk-8u231-linux-x64.tar.gz // 设置环境变量:在文件末尾添加 [hadoop@node1 ~]$ sudo vim /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 // 测试java安装是否成功 [hadoop@node1 ~]$ java -version |
准备本地YUM源
1)安装Apache
// 安装Apache [hadoop@node1 ~]$ sudo yum -y install httpd // 启动Apache [hadoop@node1 ~]$ sudo systemctl start httpd // 设置开机启动 [hadoop@node1 ~]$ sudo systemctl enable httpd // 测试,如下表示成功 |
2)HDP安装包部署到Apache
// 从“HDP安装包”位置(提取码: 2kia,有效期至2022.08.30),下载后先复制到“~/”目录 // 然后将"*.tar.gz"文件移到"/var/www/html/"目录下: [hadoop@node1 ~]$ sudo mv *.tar.gz /var/www/html/ [hadoop@node1 ~]$ cd /var/www/html/ // 解压 [hadoop@node1 html] $ sudo tar -zxvf ambari-2.7.4.0-centos7.tar.gz [hadoop@node1 html] $ sudo tar -zxvf HDP-UTILS-1.1.0.22-centos7.tar.gz [hadoop@node1 html] $ sudo tar -zxvf HDP-GPL-3.1.4.0-centos7-gpl.tar.gz [hadoop@node1 html] $ sudo tar -zxvf HDP-3.1.4.0-centos7-rpm.tar.gz // 更改权限 [hadoop@node1 ~]$ sudo chmod -R ugo+rX /var/www/html/ // 清理安装包 [hadoop@node1 html]$ sudo rm -r *.gz // 由此可得到以上几个yum库的Base URL如下: HDP-3.1 http://node1/HDP/centos7/3.1.4.0-315/ HDP-3.1-GPL http://node1/HDP-GPL/centos7/3.1.4.0-315/ HDP-UTILS-1.1.0.22 http://node1/HDP-UTILS/centos7/1.1.0.22/ ambari http://node1/ambari/centos7/2.7.4.0-118/ |
3)配置本地yum源
[hadoop@node1 ~]$ cd /etc/yum.repos.d/ [hadoop@node1 yum.repos.d]$ sudo vim ambari.repo [ambari-repo] name=ambari baseurl=http://node1/ambari/centos7/2.7.4.0-118/ gpgcheck=0 enabled=1 // 检查结果如下:OK! |
安装MySql
1)安装MySQL 5.7的Yum仓库
[hadoop@node1 ~]$ sudo yum -y localinstall https://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm |
2)导入mysql客户端的最新公钥
[hadoop@node1 ~]$ sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 |
3)安装MySQL
[hadoop@node1 ~]$ sudo yum -y install mysql-community-server |
4)设置开机启动
[hadoop@node1 ~]$ sudo systemctl enable mysqld [hadoop@node1 ~]$ sudo systemctl start mysqld [hadoop@node1 ~]$ sudo systemctl status mysqld |
5)查看临时root密码
[hadoop@node1 ~]$ sudo grep 'temporary password' /var/log/mysqld.log |
6)修改root密码
// 执行下面mysql登录命令,然后输入前面获得的临时密码 [hadoop@node1 ~]$ mysql -u root -p // 以上登录成功后,再执行下面命令将root用户的密码改为"root%123" 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 |
7)安装MySQL的Java驱动
[hadoop@node1 ~]$ sudo mkdir -p /usr/share/java [hadoop@node1 ~]$ sudo mv mysql-connector-java-8.0.18.jar /usr/share/java/ |
部署AmbariServer
安装AmbariServer
[hadoop@node1 ~]$ sudo yum -y install ambari-server |
创建Ambari数据库
// MySql登录(密码为"root%123") [hadoop@node1 ~]$ 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 |
配置AmbariServer
[hadoop@node1 ~]$ sudo ambari-server setup |
启动Ambari-Sever
// 因本次采用单机运行所有HDP大数据组件,建议调大VM的内存(8GB以上)后再启动; [hadoop@node1 ~]$ sudo ambari-server start 注意:此时ambari-server已经可以开机启动,如果是重启,则不需要执行下面的命令。 |
登录Ambari-Sever
http://192.168.66.31:8080/ 默认用户/密码:admin/admin |
创建HDP集群
1)集群命名(如:hjy_hdp_cluster)
|
2)版本选择(选择HDP-3.1,并选择本地仓库)
|
3)设置yum源的url(仅保留redhat 7那一行,删除其它行)
// 根据前面本地yum的配置结果,以上对应Base URL如下: HDP-3.1 http://node1/HDP/centos7/3.1.4.0-315/ HDP-3.1-GPL http://node1/HDP-GPL/centos7/3.1.4.0-315/ HDP-UTILS-1.1.0.22 http://node1/HDP-UTILS/centos7/1.1.0.22/ |
4)注册主机(本实验只有1个node1节点主机)
// 通过下面命令获得node1的私钥内容,再全复制到上面编辑框中 [hadoop@node1 ~]$ cat .ssh/id_rsa |
5)当所有主机状态都为'Success'后,再点击下一步,如下图所示。
|
6)选择安装的服务(Amabri将大数据的各个组件叫做 Service,先暂选择HDFS、YARN安装,如下图所示)
|
7)分配Mater服务安装到哪些主机。
|
8)分配Slave服务和Client安装到哪些主机(默认即可)
|
9)自定义Service,等其它配置
用户名/密码:都设置为admin;其它都保持默认配置,一路下一步 |
10)Review
|
11)部署完服务之后,Ambari会自动启动服务并进行测试,如下界面代表成功安装.
|
12)摘要
|
13)Amabri的dashboard页面
|
验证集群
1)经过前面的步骤搭建好了Ambari的集群,虽然只有一个node1节点,但五脏俱全(已包括了HDFS、YARN、 Zookeeper集群等),可以执行如下命令简单验证下HDFS:
[hadoop@node1 ~]$ hdfs dfs -ls / |
添加其它服务
添加HBase
1)通过Services -> "Add Service" 进入向导即可完成,保持默认设置即可,略!
|
添加Hive
1)Hive的添加过程与HBase基本一样,其它服务亦如此。不过Hive的元数据一般选择存放在MySQL,需在MySQL里为Hive创建用户和数据库,方法如下:
// 登录MySQL,输入密码:root%123 [hadoop@node1 ~]$ 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 hive; CREATE USER 'hive'@'%' IDENTIFIED BY 'hive%123'; GRANT ALL ON hive.* TO 'hive'@'%'; FLUSH PRIVILEGES; exit |
2)告诉Hive组件MySQL驱动的位置
[hadoop@node1 ~]$ sudo ambari-server setup --jdbc-db=mysql --jdbc-driver=/usr/share/java/mysql-connector-java-8.0.18.jar |
3)接下来与HBase基本一样,只是在"Customize Services"配置环节时,切换到"HIVE -> DATABASE",完成下面的自定义设置:
|
4)查看结果
|
服务自启动
1)如果让托管给Ambari的服务自动启动,则可以按照下图操作:
|