zl程序教程

您现在的位置是:首页 >  工具

当前栏目

快速建立一个小型CDH集群(施工完毕)

集群 一个 快速 建立 小型 CDH 完毕
2023-09-11 14:16:27 时间

临时接到其他需求,为了方便测试,需要建立一个与主要业务隔离的线下集群。本文来记录详细步骤。

环境说明

  • CentOS 7.3
  • JDK 1.8.0_172
  • MySQL 5.7.21 w/ Connector Java 5.1.45
  • CDH 5.13.3
  • Cloudera Manager 5.13.3
  • 3个KVM虚拟化节点。每个节点4核心,24G内存,40G硬盘
  • 除非特别说明,均以root用户操作

CDH Parcel下载地址:https://archive.cloudera.com/cdh5/parcels/
CM下载地址:http://archive.cloudera.com/cm5/cm/5/

所用到的相关包稍后会上传到网盘。

修改hosts

每个节点进行如下更改。

192.168.123.237 ha1
192.168.123.236 ha2
192.168.123.235 ha3

其中ha1作为CM主节点。

配置SSH互信

互信就是免密登录。每个节点上修改/etc/ssh/sshd_config文件,去掉以下两行的注释。

RSAAuthentication yes
PubkeyAuthentication yes

每个节点上生成RSA公私钥对。

ssh-keygen -t rsa -P ''

在ha1上执行以下命令,将所有节点的公钥集中到ha1的认证文件authorized_keys中。

for j in {1..3}; do ssh root@ha${j} cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys; done

将集中的公钥分发到其他节点上。

for j in {1..3}; do scp /root/.ssh/authorized_keys root@ha${j}:/root/.ssh/; done

在各个节点更改密钥的权限,并重启SSH服务。

chmod -R 600 /root/.ssh
systemctl restart sshd.service

最后验证一下是否可以互信,比如在ha3上执行:

ssh root@ha2

不再需要密码的话就是成功了。

关闭防火墙和selinux

systemctl stop firewalld.service
setenforce 0

安装JDK

由于已经配置完了SSH互信,因此可以将JDK包直接分发到各个节点上,然后执行:

tar zxvf /opt/jdk-8u172-linux-x64.tar.gz

再修改/etc/profile,配置环境变量。

export JAVA_HOME=/opt/jdk1.8.0_172/
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

测试一下是否安装成功。

source /etc/profile
java -version

配置ntp

安装ntp,并校正时间。

yum -y install ntp
ntpdate -d cn.pool.ntp.org

启动ntp服务,并确认已经校正。

service ntpd start
ntpstat

预先安装一大堆依赖

yum -y install libaio chkconfig bind-utils psmisc libxslt zlib sqlite cyrus-sasl-plain cyrus-sasl-gssapi fuse portmap fuse-libs redhat-lsb

安装MySQL

在主节点上安装,作为Cloudera Manager的存储与Hive Metastore的存储。先清掉现有的MySQL相关包。

rpm -qa | grep mysql
yum remove mysql-libs

然后通过已下载好的RPM来安装:

rpm -ivh /opt/mysql-community-common-5.7.21-1.el7.x86_64.rpm
rpm -ivh /opt/mysql-community-libs-5.7.21-1.el7.x86_64.rpm
rpm -ivh /opt/mysql-community-client-5.7.21-1.el7.x86_64.rpm
rpm -ivh /opt/mysql-community-libs-compat-5.7.21-1.el7.x86_64.rpm
rpm -ivh /opt/mysql-community-server-5.7.21-1.el7.x86_64.rpm

启动MySQL。

systemctl start mysqld.service
查看root用户的默认密码。
grep ‘temporary password’ /var/log/mysqld.log
2019-07-07T15:42:40.038957Z 1 [Note] A temporary password is generated for root@localhost: m=khaw4W&–S
登录上去,修改密码,并更改权限。
mysql -uroot -p
Enter password:
mysql> alter user 'root'@'localhost' identified by 'Dayima2018';
Query OK, 0 rows affected (0.00 sec)

mysql> grant all privileges on *.* to 'root'@'%' identified by 'Dayima2018' with grant option;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

配置Cloudera Manager

在各个节点上分发并解压CM的包。

tar zxvf cloudera-manager-centos7-cm5.13.3_x86_64.tar.gz

创建cloudera-scm用户,该用户专供CM Server和CM Agent使用。

useradd --system --home=/opt/cm-5.13.3/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
更改CM Agent配置文件中的主节点名称,所有节点都要改的。
vim /opt/cm-5.13.3/etc/cloudera-scm-agent/config.ini
server_host=ha1

然后就可以将MySQL Connector包放到CM的lib目录中,并创建CM的数据库。

cp mysql-connector-java-5.1.45-bin.jar /opt/cm-5.13.3/share/cmf/lib

sh /opt/cm-5.13.3/share/cmf/schema/scm_prepare_database.sh mysql -h ha1 -uroot -pDayima2018 --scm-host ha1 scm scm scm

准备CDH Parcel,启动CM

在CM Server节点创建Parcel仓库目录,将下载好的Parcel、SHA1(需要重命名扩展名为.sha)和Manifest文件都拷贝到它下面。

mkdir -p /opt/cloudera/parcel-repo
mv CDH-5.13.3-1.cdh5.13.3.p0.2-el7* cloudera/parcel-repo
mv manifest.json cloudera/parcel-repo

在CM Agent节点(也就是三个都要)创建Parcel目录。

mkdir -p /opt/cloudera/parcels
chown cloudera-scm:cloudera-scm /opt/cloudera/parcels

ha1启动CM Server,所有节点启动CM Agent。

/opt/cm-5.13.3/etc/init.d/cloudera-scm-server start
/opt/cm-5.13.3/etc/init.d/cloudera-scm-agent start

通过CM进行集群配置

访问ha1:7180,用admin/admin登录,选择节点。

195230-a76d4475d74f796e.png

等待分发、解压与激活。注意图中的Download阶段应该是瞬间完成的,如果不是,就请检查前面的配置是否正确。

195230-121aa2e01c589f01.png

然后会报交换策略与透明大页面的问题,可以参考我很早之前写的《CDH大数据集群Linux系统参数调优》来解决。

195230-5927397e6b0fe096.png

echo 1 > /proc/sys/vm/swappiness
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

接下来选择配置方案,用最小化的“Core Hadoop”,指定节点角色。

195230-b876b34f69ad236c.png

另外还需要在MySQL中创建Hive、Oozie、Hue和Activity Monitor需要的数据库。

create database amon default character set utf8; 
grant all on amon.* to 'amon'@'%' identified by 'amon';

create database hive default character set utf8; 
grant all on hive.* to 'hive'@'%' identified by 'hive';

create database hue default character set utf8; 
grant all on hue.* to 'hue'@'%' identified by 'hue';

create database oozie default character set utf8; 
grant all on oozie.* to 'oozie'@'%' identified by 'oozie';

点击Test Connection按钮,确保成功。

195230-7e9578c60d297a6a.png

接下来的集群配置可以都不用改,然后启动集群。如果Hive Metastore起不来的话,将MySQL Connector复制一份到Hive的lib目录下。

195230-1cea74f54179b013.png

cp mysql-connector-java-5.1.45-bin.jar /opt/cloudera/parcels/CDH/lib/hive/lib

大功告成。