如何Redhat7的CDH集群中扩容增加Redhat6的节点
温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。
Fayson的github: https://github.com/fayson/cdhproject
提示:代码块部分可以左右滑动查看噢
1.文档编写目的
前面Fayson有很多篇文章介绍CDH各个版本的安装部署,在安装部署的前置条件中说明需要在统一的操作系统版本进行部署。部分用户早期在RedHat7以下版本部署CDH集群,在后续集群扩容时使用了RedHat7版本的操作系统,对于这种跨操作系统安装部署或扩容CDH集群如何解决?本篇文章Fayson主要介绍如何跨操作系统扩容CDH集群。
- 文章概述
1.集群环境描述
2.扩容节点前置准备
3.跨操作系统扩容
- 测试环境
1.CM和CDH5.15.0
2.现有集群操作系统RedHat7.4
3.扩容节点操作系统RedHat6.5
2.集群部署环境描述
集群除了部署CDH的基础组件外还部署了Spark2、CDSW服务,如下:
集群现有环境描述
IP |
HOSTNAME |
操作系统 |
功能 |
---|---|---|---|
172.31.6.83 |
ip-172-31-6-83 |
RedHat7.4 |
Cloudera Manager |
172.31.12.142 |
ip-172-31-12-142 |
RedHat7.4 |
DataNode |
172.31.9.113 |
ip-172-31-9-113 |
RedHat7.4 |
DataNode |
172.31.4.105 |
ip-172-31-4-105 |
RedHat7.4 |
DataNode |
172.31.14.51 |
cdsw.fayson.com |
RedHat7.4 |
CDSW |
待加入集群节点
IP |
HOSTNAME |
操作系统 |
功能 |
---|---|---|---|
172.31.11.138 |
ip-172-31-11-138 |
RedHat6.5 |
DataNode |
3.扩容节点前置准备
前面Fayson有文章介绍CDH集群安装部署的前置条件《CDH安装前置准备》,下面的步骤Fayson简单的说明前置准备。
1.在/etc/hosts文件中添加扩容节点的配置,将配置文件分发至集群所有节点包含待扩容节点
2.验证SELinux是否禁用
3.验证防火墙是否关闭
[root@ip-172-31-11-138 ~]# service iptables status
(可左右滑动)
4.验证时钟同步是否正常
[root@ip-172-31-11-138 ~]# ntpq -p
(可左右滑动)
5.检查swap设置
[root@ip-172-31-11-138 ~]# sysctl -p
(可左右滑动)
6.检查透明大页面
在所有节点执行如下命令,禁用透明大页面
echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
(可左右滑动)
在/etc/rc.local文件中增加如下配置:
if test -f /sys/kernel/mm/redhat_transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/redhat_transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
fi
(可左右滑动)
注意 :RedHat6和RedHat7目录有些区别。
除了上面提到的配置当然还有其他的配置,如:
- 集群启用了Kerberos则需要在新扩容就节点安装Kerberos客户端并将krb5.conf文件拷贝至新节点
- 集群安装了OpenLDAP则需要配置OPenLDAP客户端及SSSD服务
- 集群使用了新的JDK或Python环境,则需要将JDK和Python拷贝至待扩容节点
- 配置待扩容节点的本地yum源,这里Fayson使用的云环境不需要进行配置
4.CM RedHat6的Yum源部署
新扩容的节点是RedHat6版本,集群之前环境是RedHat7使用的Cloudera Manager安装包是RedHat7环境下的。使用RedHat7的安装包在RedHat6上安装会出现版本兼容问题,这里我们同时需要准备RedHat6版本的Cloudera Manager安装包。
1.下载RedHat6版本的Cloudera Manager安装包到/var/www/html/cm5.15-el6目录下
2.在当前目录下执行命令
[root@ip-172-31-6-83 cm5.15-el6]# createrepo .
[root@ip-172-31-6-83 cm5.15-el6]# ll
(可左右滑动)
3.浏览器访问验证是否部署成功
5.CDH、Spark2和CDSW RedHat6 Parcel部署
集群之前环境是RedHat7使用CDH的Parcel包是RedHat7环境下的,新扩容的节点是RedHat6版本,同时需要准备RedHat6版本CDH的Parcel安装包。
在集群中同时也安装了Spark2和CDSW服务,在扩容节点时需要分发Spark2和CDSW的Parcel包到新节点,这里我们也需要同时部署RedHat环境下Spark2和CDSW的Parcel包。
1.下载RedHat6版本CDH5.15.0的Parcel包至/var/www/html/cdh5.15-el6目录下
2.下载RedHat6版本Spark2.3.0的Parcel包至/var/www/html/spark2.3.0-el6目录下
3.下载RedHat6版本CDSW的Parcel包至/var/www/html/cdsw1.4-el6目录下
4.验证Parcel是否部署成功
6.跨操作系统扩容节点
1.在集群扩容前确保CDH、CDSW和Spark2的Parcel已分发至集群所有节点
这一步是确保RedHat7环境下集群所有节点的Parcel包均分发成功并且已成功激活。
2.修改CDH、Spark2和CDSW的Parcel库地址为上面部署的RedHat6的地址
注意:这里配置RedHat的Parcel地址前提是RedHat7的所有节点Parcel已分发激活。
3.接下来我们使用Cloudera Manager向导向CDH集群中添加操作系统为RedHat6的节点
4.点击“继续”,输入CM的yum地址
注意:这里使用RedHat6版本的库地址,因为我们新加节点操作系统为RedHat6。
5.点击“继续”,安装JDK
6.点击“继续”,输入SSH登录用户及秘钥
7.点击“继续”,向新加节点安装Agent服务
Agent服务安装成功
8.点击“继续”,向新加节点安装Parcel
分发完成
9.点击“继续”,进行主机检查
提示:系统之间存在不匹配的版本问题。
10.点击“继续”,选择默认
11.点击“继续”
12.点击“完成”,完成新节点的添加
13.创建一个datanode模板
14.在主机列表选择新加入的节点,应用datanode模板
启动主机上的角色就完成了跨操作系统添加节点
7.总结
1.在跨操作系统新增节点或安装部署CDH集群时,需要同时准备两个操作系统版本的安装包(包括:CM的RPM、CDH的Parcel以及Spark、CDSW等Parcel)根据自己当前集群安装的服务进行部署。
2.在跨操作系统添加新节点时,首先我们需要将涉及到的安装包均部署好,在RedHat7节点的所有Parcel包分发激活完成后,再将Parcel库地址修改为RedHat6的库地址,通过新增节点的方式将操作系统为RedHat6的节点添加到集群。
3.在安装部署跨操作系统的集群时,操作方式也是一样,先将属于同一操作系统的节点安装部署完成参考Fayson前面的文章《如何在Redhat7.4安装CDH5.15》,然后修改Parcel库地址将不同操作系统节点通过新加节点的方式加入集群。
4.在新增节点时,指定Cloudera Manager的库地址时,根据我们新增节点的OS版本选择不同的Yum源。
5.注意在Fayson的示例中存在一个问题,Redhat7上的KDC服务导出的keytab文件在RedHat6上使用会报“kinit: Bad encryption type while getting initial credentials”,在后面的文章Fayson主要介绍如何解决。
提示:代码块部分可以左右滑动查看噢
为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。
- Debian8配置SSH允许root登陆
- hdu 4405Aeroplane chess(概率DP)
- hdu 3853LOOPS (概率DP)
- cf(#div1 B. Dreamoon and Sets)(数论)
- hdu 1805Expressions(二叉树构造的后缀表达式)
- 清空messages没有权限的解决方法
- hdu1710(Binary Tree Traversals)(二叉树遍历)
- 基本线程同步(一) 同步方法
- uva514(trail)(模拟栈)
- zoj3822 Domination(概率dp)
- Veeam Backup & Replication(三):创建备份与还原备份
- 使用Go开发一个简单的服务器程序
- C++ 与设计模式学习(其一)
- xz文件压缩工具的用法
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Django –Xadmin 判断登录者身份实例
- Laravel 队列使用的实现
- keras 两种训练模型方式详解fit和fit_generator(节省内存)
- Keras 中Leaky ReLU等高级激活函数的用法
- Python错误的处理方法
- python3的pip路径在哪
- MySQL 案例:init_connect 引发的 Lost connection
- PHP一个简单的无需刷新爬虫
- PHP实现函数内修改外部变量值的方法示例
- PHP中soap用法示例【SoapServer服务端与SoapClient客户端编写】
- PHP命名空间简单用法示例
- PHP array_shift()用法实例分析
- PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
- 基于Python+QT的gui程序开发实现
- 使用tensorflow根据输入更改tensor shape