一 前言

阅读本文前需要掌握的知识:

  • Linux基本原理和命令
  • Hadoop生态系统(包括HDFS,Spark的原理和安装命令)

由于Hadoop生态系统组件众多,导致大数据平台多节点的部署,监控极其不方便,因此一些Hadoop厂商提供了企业发行版,例如CDH,HDP等。这些Hadoop企业发行版将Hadoop生态系统的开源组件整合到了一个平台之上,并做了一些定制,提供了安装,部署,监控等工具,大大方便了平台运维人员。
CDH是Cloudera公司向企业客户提供的基于Apache Hadoop生态系统构建的大数据分析平台。
HDP是Hortonworks公司基于Hadoop生态系统开源组件构建的大数据分析平台。
我们选用HDP搭建企业级大数据平台,下面会着重分析说明原因。

二 大数据平台说明

目前企业级Hadoop发行版,免费版本主要有Hadoop Cloudera版本(Cloudera’s Distribution Including Apache Hadoop,简称“CDH”)和Hortonworks版本(Hortonworks Data Platform,简称“HDP”)。

2.1 CDH与HDP比较

 CDHHDP
相同点 1.相对于Intel Hadoop 和IBM Hadoop的发行版而言,两者都是免费版。 2.相对于Apache 开源社区版本,更易于维护,管理,且稳定性高。
不同点 文档详细,但区分免费版和企业版,企业版只有试用期 HDP版本是比较新的版本,目前最新版(HDP2.6.0)与apache基本同步,因为Hortonworks内部大部分员工都是apache代码贡献者。

2.2 HDP大数据平台说明

我们的大数据平台基于HDP2.6.0版本搭建,HDP 2.6.0 Hadoop生态系统主要组件版本如下:


 
HDP2.6.0主要版本说明.png

2.3 企业级大数据平台架构

根据我们目前的业务场景,我们主要选用Ambari(Hadoop生态系统管理监控),Hdfs(分布式文件系统),HBase(分布式列数据库),Yarn(资源调度管理),Kafka(分布式消息组件),Spark(分布式内存计算引擎),Zookeeper(分布式服务组件)等组件作为我们大数据平台的基础。下面主要简单介绍我们搭建的企业级大数据平台主要组件(详细内容请查看官方文档):

  • HDFS 事实上已经成为大数据存储层的标准,经过多年的发展,目前基本功能(如高可用,异构存储)已经非常稳定。
  • HBase 是基于Hdfs的分布式列数据库。可以作为存储层的辅助,我们的业务场景用到了。
  • Yarn是Hadoop生态系统的资源调度组件,我们使用Spark作为计算引擎,集群每隔节点上的资源如何合理分配?如果共享底层的存储数据?都离不开Yarn。
  • Spark 作为我们大数据平台的分布式计算引擎,其核心是RDD(弹性分布式数据集),RDD有两类操作Transformation和Action,基本可以满足我们常用的数据分析场景。
  • Ambari 是我们大数据平台的管理和监控组件,主要由两部分组成:Ambari Server 和 Ambari Agent组成。简单来说,用户通过 Ambari Server 通知 Ambari Agent 安装Hadoop生态系统的组件;Agent 会定时地发送集群各个机器每个组件模块的状态给 Ambari Server,最终这些状态信息会呈现在 Ambari 的 Web界面上,方便用户了解到集群的各种状态,并进行相应的维护。


     
    企业级大数据平台.png

三 大数据平台安装部署

3.1 集群规划

我们的集群初期规划为6个节点,1个Ambari节点(负责整个集群监控和管理),1个NameNode/Master节点(HDFS,Spark,HBase的主节点),1个SecondaryNameNode节点(HDFS的备份节点),3个DataNode/Work节点(HDFS,HBase的数据节点)

3.1.1 硬件规划

我们的物理机安装Centos-7-x86_64-Minimal(Centos 7.3 最小版)系统,由于使用Spark做分析引擎,对内存的要求比较高,具体规划如下:

主机名称操作系统内存硬盘
ambari Centos-7-x86_64-Minimal 4G 200G
bigdata1 Centos-7-x86_64-Minimal 16G 500G
bigdata2 Centos-7-x86_64Minimal 16G 500G
bigdata3 Centos-7-x86_64-Minimal 16G 500G
bigdata4 Centos-7-x86_64-Minimal 16G 500G
bigdata5 Centos-7-x86_64-Minimal 16G 500G

物理机安装完Centos系统后,使用下面命令查看内存

## 查看系统内存
free -h

除过Ambari节点,集群其他各节点物理机Centos系统硬盘分区如下:

 /boot   1024M
 /        50G  ##根目录
 /home    20G  ##用户目录
 /usr     20G  ##安装软件
 /data    400G ##存放数据
 swap      8G

3.1.2 软件规划

主机名称安装HDP组件JPS启动进程
ambari JDK/PostgreSQL/Ambari AmbariServer
bigdata1 JDK/Zookeeper/Hadoop/HBase Namenode/QuoqumPeerMain/Hmaster/ History Server/Kafka
bigdata2 JDK/Zookeeper/Hadoop Resourcemanager/SecondaryNameNode
bigdata3 JDK/Zookeeper/Hadoop/HBase QuoqumPeerMain/Nodemanager/Hregionserver
bigdata4 JDK/Zookeeper/Hadoop/HBase QuoqumPeerMain/Nodemanager/Hregionserver
bigdata5 JDK/Zookeeper/Hadoop/HBase QuoqumPeerMain/Nodemanager/Hregionserver

3.2 准备工作

  • HDP 2.6.0以上的版本,支持Ambari 2.5.x版本部署安装。
  • 在所有节点安装Oracle JDK 8。
## 注意去官方下载jdk需要header头
cd /usr/local
wget -c --header "Cookie: oraclelicense=accept-securebackup-cookie" 
http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.tar.gz 
## 解压 jdk文件,修改文件名
tar zxf jdk-8u144-linux-x64.tar.gz
mv jdk-8u144-linux-x64 java
## 配置java环境变量
vi /etc/profile
添加下面内容:
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib
PATH=$PATH:$JAVA_HOME/bin
## 环境变量生效
source /etc/profile

  • 建议配置每个机器节点上的yum为阿里yum,以提高下载速度。由于centos 默认的yum镜像是国外的,速度慢,可以配置国内的阿里yum。
## 备份 默认yum镜像文件
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
##  下载阿里CentOS-Base.repo镜像文件 到/etc/yum.repos.d/
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
## 执行命令生成缓存
yum makecache

  • 所有节点配置主机名
## 打开hosts文件
vi /etc/hosts
192.168.0.100 ambari
192.168.0.101 bigdata1
192.168.0.102 bigdata2
192.168.0.103 bigdata3
192.168.0.104 bigdata4
192.168.0.105 bigdata5
## 注意不要移除hosts文件中这两行
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
## 检查主机名
hostname -f
## 设置主机名,例如设置192.168.0.100机器的主机名为ambari
hostname ambari
  • 配置集群各节点间的时间同步
## 每个机器安装时间同步工具,并启动ntp服务,Hbase之间数据同步需要配置时间同步
yum install -y ntp
systemctl enable ntpd
  • 配置各节点间SSH无密码访问
# 每个节点生成ssh的key,执行后会有多个输入提示,不用输入任何内容,全部直接回车即可
ssh-keygen
#拷贝到其他节点
ssh-copy-id -i /.ssh/id_rsa -p 22 root@ambari
ssh-copy-id -i /.ssh/id_rsa -p 22 root@bigdata1
ssh-copy-id -i /.ssh/id_rsa -p 22 root@bigdata2
ssh-copy-id -i /.ssh/id_rsa -p 22 root@bigdata3
ssh-copy-id -i /.ssh/id_rsa -p 22 root@bigdata4
ssh-copy-id -i /.ssh/id_rsa -p 22 root@bigdata5
#验证是否设置成功
ssh bigdata1
  • 暂时关闭各节点防火墙和SELinux
## 关闭防火墙
systemctl disable firewalld
service firewalld stop
## 关闭SELinux
setenforce 0
  • 设置每个节点的文件打开数
## 查看linux默认打开文件数
ulimit -Sn
ulimit -Hn
## 设置文件打开数为10000个
ulimit -n 10000

3.3 安装部署

3.3.1 在Ambari节点安装Ambari

  • ambari节点配置ambari repo文件
## root用户登陆ambari节点,下载ambari repo文件 
wget -nv http://public-repo-1.hortonworks.com/ambari/centos7/2.x/updates/2.5.1.0/ambari.repo -O /etc/yum.repos.d/ambari.repo
## 查看ambari节点的yum源,可以看到我们刚才配置的ambari源和最开始配置的aliyun 源
yum repolist
## 返回结果如下
repo id                   repo name                                       status
!ambari-2.5.1.0           ambari Version - ambari-2.5.1.0                    12
!base/7/x86_64            CentOS-7 - Base - mirrors.aliyun.com            9,363
!extras/7/x86_64          CentOS-7 - Extras - mirrors.aliyun.com            450
!updates/7/x86_64         CentOS-7 - Updates - mirrors.aliyun.com         2,146
repolist: 11,971
  • 安装ambari-server
##  安装ambari-server
yum install ambari-server
  • 配置ambari server
    注意ambari依赖于数据库,默认内嵌PostgreSQL,我么选用默认内嵌的postgresql数据库
# 在ambari节点执行下面命令
ambari-server setup

下面是配置执行流程,按照提示操作
(1) 提示是否自定义设置。输入:y
Customize user account for ambari-server daemon [y/n] (n)? y
(2)ambari-server 账号。输入:root
Enter user account for ambari-server daemon (root):root
Adjusting ambari-server permissions and ownership...
(3)设置JDK。输入:3
Checking JDK...
Do you want to change Oracle JDK [y/n] (n)? y
[] Oracle JDK 1.8 + Java Cryptography Extension (JCE) Policy Files 8
[] Oracle JDK 1.7 + Java Cryptography Extension (JCE) Policy Files 7
[] Custom JDK
==============================================================================
Enter choice (1): 3
(4)如果上面选择3自定义JDK,则需要设置JAVA_HOME。输入:/usr/local/java
WARNING: JDK must be installed on all hosts and JAVA_HOME must be valid on all hosts.
WARNING: JCE Policy files are required for configuring Kerberos security. If you plan to use Kerberos,please make sure JCE Unlimited Strength Jurisdiction Policy Files are valid on all hosts.
Path to JAVA_HOME:/usr/local/java
Validating JDK on Ambari Server...done.
Completing setup...
(5)数据库配置。选择:y
Configuring database...
Enter advanced database configuration [y/n] (n)? y

(6)选择数据库类型。输入:1 
Configuring database...
==============================================================================
Choose one of the following options:
[1] - PostgreSQL (Embedded)
[2] - Oracle
[3] - MySQL
[4] - PostgreSQL
[5] - Microsoft SQL Server (Tech Preview)
[6] - SQL Anywhere
==============================================================================
Enter choice (1): 1
(7)设置数据库的具体配置信息,根据实际情况输入,如果和括号内相同,则可以直接回车。
Hostname (localhost): ambari
Port ():
Database name (ambari):
Username (ambari):
Enter Database Password (bigdata):
  • 启动Amabri
## 启动ambari服务
ambari-server start
## 成功启动后在浏览器输入Ambari地址:http://{ambari节点IP地址}:8080/

3.3.2 安装HDP

之前我们大数据测试平台的安装都是用命令行,单独安装Hadoop生态系统的组件,现在我们利用Ambari 图形界面安装,都是一路Next操作,由于安装时未截图,我去网上找了一些安装界面,做个注释说明

  • 浏览器打开网站 http://{ambari节点IP地址}:8080/,登录Ambari,默认管理员账户登录, 账户:admin 密码:admin
 
ambari登陆界面.png
  • 安装向导界面
 
ambari安装向导界面.png
  • 设置集群名称
 
设置集群名称.png
  • 配置HDP 公共源(选择HDP2.6)
选择RedHat7,HDP 2.6.0 yum地址如下
HDP-2.6: http://public-repo-1.hortonworks.com/HDP/centos7/2.x/updates/2.6.0.3
HDP-UTILS-1.1.0.21:http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.21/repos/centos7
  • 设置集群hosts列表,配置ambari节点私钥文件
## Target Host配置集群各节点
192.168.0.101 bigdata1
192.168.0.102 bigdata2
192.168.0.103 bigdata3
192.168.0.104 bigdata4
192.168.0.105 bigdata5
# Host Registraion information 
填写ambari节点私钥,SSH user Account账户设置为root
  • Host确认(确认前面配置集群中hosts列表 中的机器是否都可用,如果集群中机器Success后进行下一步操作)
  • 选择要安装的服务
    注意我们主要安装HDFS,HBase ,ZooKeeper,Spark2,Kafka。在HDP2.6.0版本默认需要安装YARN+MAPREDUCE2,Tez,Hive,SmartSense等组件(下图是网上找的图,只是个参考)
 
服务安装1.png
 
服务安装2.png
  • 安装服务的Master配置
 
各服务Master配置.png
  • 安装服务的Slaves和Clients配置
## 配置HDFS的DataNode ,YARN的NodeManager 以及HBase的Hregionserver的节点为
bigdata3,bigdata4,bigdata5
  • 安装服务的配置文件属性设置(根据提示设置安装服务的必须属性,注意HDFS的NameNode和DataNode节点目录不能设置为home/目录)
  • 显示配置信息
 
配置信息1.png

 
配置信息2.png

 
配置信息3.png
  • 开始安装部署服务(安装各个服务,并且完成安装后会启动相关服务,安装过程比较长,如果中途出现错误,请根据具体提示或者log进行操作)
  • 安装完成后,Ambari面板如下:


     
    ambari面板.png

四 总结

  • ambari机器需要外网IP地址
  • 如果需要搭建内网hdp yum 源,需要去官网下载hdp 和ambari [1]
  • HDP下安装的 Spark的在Yarn-cluster模式下,个人觉得应该在bigdata3,bigdata4,bigdata5 安装spark slaves服务,但是和我们单独安装spark模式不同,这里master和slave节点上的服务相同(都是Spark History Server),后面继续学习。
  • Ambari infra和Ambari Metrics的作用需要深入了解。
  • 注意HDP2.6.0下的HBase版本比开源社区的版本底很多,开发时尽量用HDP提供的Hbase客户端版本。

参考文章

[1] 官方Ambari安装HDP文档



作者:IIGEOywq
链接:https://www.jianshu.com/p/079a0c98e0bc
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
 posted on 2019-08-22 09:33  xibuhaohao  阅读(8640)  评论(0编辑  收藏  举报