临时接到其他需求,为了方便测试,需要建立一个与主要业务隔离的线下集群。本文来记录详细步骤。
环境说明
- 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登录,选择节点。
等待分发、解压与激活。注意图中的Download阶段应该是瞬间完成的,如果不是,就请检查前面的配置是否正确。
然后会报交换策略与透明大页面的问题,可以参考我很早之前写的《CDH大数据集群Linux系统参数调优》来解决。
echo 1 > /proc/sys/vm/swappiness
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
接下来选择配置方案,用最小化的“Core Hadoop”,指定节点角色。
另外还需要在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按钮,确保成功。
接下来的集群配置可以都不用改,然后启动集群。如果Hive Metastore起不来的话,将MySQL Connector复制一份到Hive的lib目录下。
cp mysql-connector-java-5.1.45-bin.jar /opt/cloudera/parcels/CDH/lib/hive/lib
大功告成。
网友评论