大数据CDH集群安装实录

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 通过ClouderaManager管理CDH集群,从而为大数据集群做统一管理,在整个大数据集群运维的角度来说,提供了很多便利点。

注意:配置CDH6.2.0时,内存至少32G起步,不然会出现集群启动没反应等问题


集群准备


测试环境目前3台机:

ip

名称

内存大小

磁盘空间

10.0.2.138

data-dev-staging-01

64G

200G

10.0.2.139

data-dev-staging-02

64G

200G

10.0.2.140

data-dev-staging-03

64G

200G


系统环境配置


1、主机名和IP地址修改


确认主机名和IP,这部分因为运维部门已提前完成,减少了部分工作。修改主机名可通过以下2种方式:

vim /etc/hostname
set-hostname XXX

分别ping其他服务器,确认网络连接正常:

ping data-dev-staging-01ping data-dev-staging-02ping data-dev-staging-03

这部分内容没有需要修改的所以可以直接跳过。


2、登录root用户


测试环境登录无密码,可直接切换至root账户:

sudo -i

这部分内容没有需要修改的所以可以直接跳过。

3、域名映射


解释:在集群安装过程中,不能在所有的地方都写ip地址,主要也是为了便捷性和安全性考虑,所以修改和添加以下内容:

vim /etc/hosts
10.0.2.138      data-dev-staging-01     data-dev01
10.0.2.139      data-dev-staging-02     data-dev02
10.0.2.140      data-dev-staging-03     data-dev03

4、SSH免密认证


每台服务器生成私钥id_rsa和公钥id_rsa.pub,然后追加到每台机器的授权authorized_keys中:


生成私钥和公钥命令:

ssh-keygen

然后三次回车,得到公钥和私钥。生成密钥后,追加到authorized_keys文件即可。


基于安全性考虑,在此文档不直接给出具体的私钥和公钥,内容大体如下(半截图)

8d0da156-9f1c-4d29-8039-f7b7140c5a2d.png

这部分内容,有一个危险点,就是在进行ssh的时候,注意原本运维小伙伴在配置的时候,是增加了跳板机的公钥在里面的,这部分内容一定要确保正确。切记!!!


5、防火墙相关


防火墙在服务器给到大数据组的时候,是直接关闭了的,因为有跳板机的缘故,在安全方面的隐患肯定会小很多。这个时候,主要还是考虑到后续的端口开放问题(主要就是指MySQL的访问端口)。

systemctl status firewalld    # 查看防火墙状态systemctl start firewalld    # 启动防火墙
firewall-cmd --list-all    # 查看所有开放端口firewall-cmd --query-port=3306/tcp    # 查看是否开启3306端口firewall-cmd --permanent --add-port=3306/tcp    # 开放3306端口
systemctl restart firewalld    # 重启防火墙firewall-cmd --query-port=3306/tcp    # 查看是否开启3306端口yessystemctl stop firewalld    # 关闭防火墙

6、Selinux相关


需要关闭SELINUX,服务器给到大数据组的时候,是直接关闭了的,所以可直接跳过。

setenforce 0vim /etc/selinux/config

c00cad24-13d3-475a-bb60-0947e66ab293.png

7、JDK安装+Scala安装


这个就是老生常谈了,但是在CDH集群安装的时候,需要注意JAVA_HOME的位置设置,修改环境变量的时候,需要将其固定到/usr/java/目录,不然后续的CDH安装过程会直接报JAVA_HOME异常,处理起来很麻烦。


通过Jumpserver将压缩包上传到每台服务器,然后解压安装之后配置环境变量即可:

tar -zxvf jdk-8u181-linux-x64.tar.gz -C /usr/java/
tar -zxf scala-2.11.8.tar -C /opt/
vim /etc/profile
# JDK Configuration
export JAVA_HOME=/usr/java/jdk1.8.0_181
export JRE_HOME=/$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$JAVA_HOME:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tool.jar:$JRE_HOME/lib
# Scala Configuration
export SCALA_HOME=/opt/scala-2.11.8
export PATH=$SCALA_HOME/bin:$SCALA_HOME:$PATH
source /etc/profile    # 完成后应用环境变量配置

然后查看是否安装成功:

java -version
scala -version

8、NTP相关


NTP这个服务,主要是做时间同步的,确保时间同步,否则在集群任务中会出现异常和数据丢失的情况。

yum install -y ntp    # 安装ntp服务
vim /etc/ntp.conf    # 修改ntp服务配置
# local clock
server 127.127.1.0
server 10.0.2.138 iburst    # 增加本地同步时间master
fudge  127.127.1.0 stratum 10
vim /etc/sysconfig/ntpd    #末尾增加一句
SYNC_CLOCK=yes
systemctl start ntpd.service    # 启动ntp服务
systemctl enable ntpd.service    # 设置自动启用
systemctl ntpd status    # 查看ntpd状态

9、修改系统参数

sysctl vm.swappiness=10
echo 'vm.swappiness=10' >> /etc/sysctl.conf
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo 'echo never > /sys/kernel/mm/transparent_hugepage/defrag'  >> /etc/rc.local
echo 'echo never > /sys/kernel/mm/transparent_hugepage/enabled'  >> /etc/rc.local

10、Httpd相关

yum -y install httpd
service httpd start 
service  httpd status

11、MySQL——保存集群元数据


之所以安装MySQL,是要存储集群元数据信息和集群基本数据。采用rpm的方式直接安装即可:

rpm -qa | grep mysql    # 查看是否已安装mysql数据库
yum -y remove mysql    # 删除原有MySQL数据库
// 依次安装下载的6个rpm包
rpm -ivh mysql-community-common-5.7.19-1.el7.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-libs-5.7.19-1.el7.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-libs-compat-5.7.19-1.el7.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-devel-5.7.19-1.el7.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-client-5.7.19-1.el7.x86_64.rpm --nodeps --force
rpm -ivh mysql-community-server-5.7.19-1.el7.x86_64.rpm --nodeps --force
systemctl start mysqld    # 启动mysql
systemctl enable mysqld    # 设置自动启用mysql
grep 'temporary password'  /var/log/mysqld.log    # 获取mysql原始密码
2021-06-08T07:31:15.682598Z 1 [Note] A temporary password is generated for root@localhost: qjRhwhJpb2#D
通过原始密码登录mysql,然后修改密码
mysql> use mysql;
mysql> update user set authentication_string=password("123456") where user='root';    # 修改root账户密码为123456
mysql> flush privileges;    # 刷新权限
mysql> quit;
// 再次进入mysql数据库,并建几个DB
mysql> create database cmf default character set = 'utf8';
mysql> create database scm default character set = 'utf8';
mysql> create database amon default character set = 'utf8';
mysql> create database hue default character set = 'utf8';
mysql> create database oozie default character set = 'utf8';
mysql> create database ke default character set = 'utf8';
mysql> create database hive default character set = 'utf8';

mysql的连接器包,需要放到指定位置:

mv mysql-connector-java-5.1.39.jar /usr/sharc/java/mysql-connector.jar

CM和CDH组件安装


写在前面:


在安装CDH集群的时候,我们将分配以下角色到测试环境:

ip

名称

角色

10.0.2.138

data-dev-staging-01

master

10.0.2.139

data-dev-staging-02

slave1

10.0.2.140

data-dev-staging-03

slave2


1、CM组件和节点安装


将CM的rpm安装包分发到不同的节点,其中,所有节点都需要上传agent包和daemons包,master还需上传server包。

# 所有节点需要安装agent和daemons
yum localinstall -y cloudera-manager-daemons-6.2.0-968826.el7.x86_64.rpm 
yum localinstall -y cloudera-manager-agent-6.2.0-968826.el7.x86_64.rpm
# master单独安装server 
yum localinstall -y cloudera-manager-server-6.2.0-968826.el7.x86_64.rpm

此时,需要对ClouderaManager进行一些配置上的修改,直接提供修改内容如下:

vim /etc/cloudera-scm-server/db.properties    # 修改server配置
com.cloudera.cmf.db.type=mysql
com.cloudera.cmf.db.host=data-dev-staging-01
com.cloudera.cmf.db.name=scm
com.cloudera.cmf.db.user=scm
com.cloudera.cmf.db.setupType=EXTERNAL
com.cloudera.cmf.db.password=123456
vim /etc/cloudera-scm-agent/config.ini    # 修改agent配置
[General]
# Hostname of the CM server.
#server_host=data-dev-staging-01
server_host=10.0.2.138    # 这里写上面这一行也可以,但是在我安装的过程中,发现有不能识别的情况存在,因为CDH这种开源项目的坑还是有不少的,所以针对不同问题需要对应调整

2、CDH组件和节点安装

# 移动指定资源到指定位置mv CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel* /opt/cloudera/parcel-repo/mv manifest.json /opt/cloudera/parcel-repo/

3、其他parcels的安装(以Phoenix举例)

# 移动指定资源到指定位置
mv PHOENIX-5.0.0-cdh6.2.0.p0.1308267-el7.parcel* /opt/cloudera/parcel-repo
mv PHOENIX-1.0.jar /opt/cloudera/csd/

启动CM并开始CDH集群安装


1、启动CM,开始安装CDH集群:

# 在主节点master上启动server
systemctl start cloudera-scm-server
# 查看相关日志,有异常就解决异常(这一步其实有很多异常需要逐步修改)
tail -200f /var/log/cloudera-scm-server/cloudera-scm-server.log
# 在全部节点上启动agent
systemctl start cloudera-scm-agent
# 端口检测,有内容即可访问web页面
netstat ‐tunlp | grep 7180

初始账户和密码为:admin、admin。


后修改为:***、***

0152cf17-1916-4b98-8bbb-9fae44d77ae0.png

2、操作Web界面


同意协议:

f03c775a-6620-4537-9035-f84c6008a514.png

选择免费版本:

175835f6-ed25-421b-967b-73ecefc52647.png

欢迎界面:

59d0eabd-c749-4771-a9fd-af3287312cbc.png

集群命名:data-dev-staging(图中为HK)

4d13f1c4-a7a6-4fc2-82b9-2df54b942bc7.png

选择管理的主机:data-dev-staging-01、data-dev-staging-02、data-dev-staging-03(图中为cdh1、cdh2、cdh3)

34e84a98-c66f-4ed8-8b7f-7d84ed415c7d.png

选择CDH的parcel包:

85a2baf0-0e07-40fa-944a-996f88290243.png

【注意,这里很容易出现识别不了parcel包的情况,这个时候,需要检测sha码是否一致,实在不行重新生成sha码,并确保后缀为.sha。】


等待分发parcel包结束:

05d867b7-426b-4587-91f5-4bcb92ac0cf2.png

验证网络和主机映射:

2836d21f-9f4a-4458-b9e2-7ff02edb997c.png

选择自定义服务,按照我们自己的需求进行安装即可:

0c3fc3e5-eb2d-4616-aead-49848840c3c1.png

分配不同主机的角色:其中主节点为data-dev-staging-01(图中为cdh1)

7f1e1e10-46ad-4c4f-8fc0-381bb5dee68a.png

选择数据库存储部署信息:主机名称为data-dev-staging-01(图中为cdh3)

cdb12454-5182-4af7-b2ef-337553ed3375.png

审核更改和命令详细信息可以直接跳过,然后等待安装完成即可:

397e51cd-7372-4780-8bca-31bafbdfe37e.png

下图给出当前测试环境下主界面:

4f28c219-2bff-41d4-8a88-67b87fa96295.png

下图给出测试环境各节点角色页面:

27053a14-bcf7-4485-b90d-fe8f6ade82ab.png

提供各组件Web UI——ip:port如下,详细域名请直接联系本人提供(因为涉及到集群运维防止直接对集群造成影响所以不在此文档直接提供)

名称

功能

原始域名

本地域名

HDFS NameNode Web UI

HDFS元数据管理和任务管理

http://data-dev-staging-01:9870

请咨询本人

Yarn ResourceManager Web UI

Yarn集群监控

http://data-dev-staging-01:8088

请咨询本人

Yarn HistoryServer Web UI

Yarn任务监控

http://data-dev-staging-01:19888

请咨询本人

HBase Web UI

HBase数据库管理

http://data-dev-staging-01:16010

请咨询本人

HiveServer2 Web U

Hive数据管理和监控

http://data-dev-staging-02:10002

请咨询本人

Hue Web UI

Hue集群监控

http://data-dev-staging-01:8888

请咨询本人

Oozie Web UI

Oozie任务调度监控

http://data-dev-staging-01:11000/oozie

请咨询本人

Kafka Eagle Web UI

Kafka数据监控

http://data-dev-staging-01:8048

请咨询本人

Spark History Server Web UI

Spark任务监控

http://data-dev-staging-02:18088

请咨询本人


主要踩坑记录与注意事项


1、SSH免密认证的时候有一个危险点,注意原本运维小伙伴在配置的时候,是增加了跳板机的公钥在里面的,这部分内容一定要确保正确。切记!!!


2、安装JDK的时候,需要注意安装位置/usr/java/目录下,一旦不是这个位置,在安装CDH的时候就开始疯狂报JAVA_HOME异常,而且这个目录是一开始默认指定的,后续需要改的话,还得从安装完之后修改,相当的麻烦,所以安装CDH大数据集群的时候,一般不会动这个JAVA_HOME的位置。另外,安装完之后,修改环境变量后记得source一下。


3、修改系统参数的部分,不熟悉的一定不要随便添加,这些系统参数的修改,是需要非常严谨地进行使用的。


4、集群内MySQL主要面向集群所需数据存放,不对外提供服务,甚至对大数据组内也不提供数据支持。所需用到的RDBMS技术支持,请直接使用SQLManager。


5、内网集群IP会出现不一致的情况,这个主要是管理主机的环节见下例图:

f4a289b1-8ebd-49ce-ad72-6b1229ef0c38.png

在安装的时候,IP地址因为堡垒机的影响,会直接出现某一个节点ip为169.254.123.1的情况,此时继续安装,会造成parcel包无法分发的情况,所以必须确保IP地址分别为各节点的内网IP。


这个时候,建议使用我自己的一个小窍门:

# 直接连接mysql数据库,然后使用scm数据库
mysql>use scm;
# 修改HOSTS表内容,直接对IP地址进行修改即可,如:
mysql>update HOSTS set IP_ADDRESS="10.0.2.139" where NAME="data-dev-staging-02";

此时再进行主机管理,即可成功识别到IP地址。


6、在集群初次安装完成之后,会出现HDFS回退策略码默认值,导致的一个报错:默认策略RS-6-3-1024k的最低节点数为9,因为我们的集群只有3台机,所以会直接报错:

058c2992-b6ab-4aa4-901f-c5ed9d3a1614.png

这个时候,修改策略即可,选择No Default Erasure Coding Policy,并禁用此项服务。


7、每个组件的安装,都有对其他更下层组件的依赖,不要随意安装,比如Hue需要HBase的Thrift Server支持,但是这个服务的开启,本身也需要内存资源,是否需要启用是从集群整体资源考虑的。


8、一般会开启HDFS的HA,集群组件的高可用HA,是大数据集群运维的高阶内容,在此文档中不会进行记录。开启HA之后,需要手动执行以下步骤:


将 Hue 服务 Hue 的 HDFS Web 界面角色 配置为 HTTPFS 角色,而非 NameNode。


对于每个 Hive 服务 Hive,停止 Hive 服务,将 Hive Metastore 数据库备份到永久性存储中,运行服务命令"更新 Hive Metastore NameNodes",然后重启 Hive 服务。


9、在CM管理页面可以直接对不同组件进行配置的修改,如修改HDFS的最大缓存:

63fcaacd-34e2-4290-b61e-54d9593be261.png

但是,依然有一部分的集群配置,是在WebUI上不直接体现的,这些内容,属于集群优化的高级内容,在此文档中不会进行记录。。



相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
1月前
|
消息中间件 分布式计算 关系型数据库
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
46 0
|
1月前
|
消息中间件 分布式计算 NoSQL
大数据-134 - ClickHouse 集群三节点 安装配置启动
大数据-134 - ClickHouse 集群三节点 安装配置启动
57 0
|
1月前
|
存储 分布式计算 druid
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(一)
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(一)
39 1
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(一)
zdl
|
7天前
|
消息中间件 运维 大数据
大数据实时计算产品的对比测评:实时计算Flink版 VS 自建Flink集群
本文介绍了实时计算Flink版与自建Flink集群的对比,涵盖部署成本、性能表现、易用性和企业级能力等方面。实时计算Flink版作为全托管服务,显著降低了运维成本,提供了强大的集成能力和弹性扩展,特别适合中小型团队和业务波动大的场景。文中还提出了改进建议,并探讨了与其他产品的联动可能性。总结指出,实时计算Flink版在简化运维、降低成本和提升易用性方面表现出色,是大数据实时计算的优选方案。
zdl
31 0
|
1月前
|
分布式计算 大数据 分布式数据库
大数据-158 Apache Kylin 安装配置详解 集群模式启动(一)
大数据-158 Apache Kylin 安装配置详解 集群模式启动(一)
43 5
|
1月前
|
SQL 分布式计算 NoSQL
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
41 4
|
1月前
|
资源调度 大数据 分布式数据库
大数据-158 Apache Kylin 安装配置详解 集群模式启动(二)
大数据-158 Apache Kylin 安装配置详解 集群模式启动(二)
40 2
|
1月前
|
消息中间件 分布式计算 druid
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(二)
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(二)
41 2
|
1月前
|
存储 消息中间件 druid
大数据-151 Apache Druid 集群模式 配置启动【上篇】 超详细!
大数据-151 Apache Druid 集群模式 配置启动【上篇】 超详细!
80 1
|
1月前
|
存储 大数据 Apache
大数据-146 Apache Kudu 安装运行 Dockerfile 模拟集群 启动测试
大数据-146 Apache Kudu 安装运行 Dockerfile 模拟集群 启动测试
23 0