CDH 安装使用到的相关文件:链接: https://pan.baidu.com/s/1xDQD1Sa8s47Qiu_EFYdhUA?pwd=5mrt 提取码: 5mrt
所有机器都需要执行下面所有的步骤。
至少三台2核16G机器。
如果买的是 ECS 服务器,则需要:
修改 /etc/cloud/templates/hosts.redhat.tmpl 文件中的 manage_etc_hosts 为 False
vim /etc/cloud/templates/hosts.redhat.tmpl
删除 /etc/cloud/cloud.cfg 文件中 manage_etc_hosts 这一行配置
vim /etc/cloud/cloud.cfg
101.200.233.33 hadoop01
112.126.56.59 hadoop02
39.96.39.79 hadoop03
这里配置的是外网地址,如果是公司内部机器,配置内网地址即可。
所有节点都要配置,新加入节点之后,也要所有节点信息都配置上。
systemctl stop firewalld
systemctl disable firewalld
iptables -F
systemctl status firewalld
vim /etc/selinux/config
将 SELINUX=enforcing 改为 SELINUX=disabled,修改完成后重启生效。
运行以下命令,不用重启即可生效:
setenforce 0
查看状态
getenforce
查看当前时区设置
timedatectl
设置亚洲上海时区
timedatectl set-timezone Asia/Shanghai
所有节点安装 ntp 服务
yum install -y ntp
新版本自带的配置文件已经设置好了很多可用的网络时钟同步服务器,以及网络丢失时,仍然可以使用硬件时间提供给其他节点进行时钟同步。
开启ntpd及查看状态
systemctl enable ntpd
systemctl restart ntpd
systemctl status ntpd
验证时间是否同步
ntpq -p
如果使用的是云主机,可能会出现以下错误
localhost: timed out, nothing received
Request timed out
可以关闭 ipv6,然后再次验证时间是否同步。关闭 ipv6 步骤如下:
永久关闭ipv6
在 /etc/sysctl.conf 中添加如下参数
vim /etc/sysctl.conf
# 禁用整个系统所有接口的IPv6,可以只简单的设置这一个参数,用来关闭所有接口的 IPv6
net.ipv6.conf.all.disable_ipv6 = 1
# 禁用某一个指定接口的IPv6(例如:eth0, eth1)
net.ipv6.conf.eth0.disable_ipv6 = 1
net.ipv6.conf.eth1.disable_ipv6 = 1
临时修改
sysctl vm.swappiness=0
# 查看是否修改成功
cat /proc/sys/vm/swappiness
永久修改
echo 'vm.swappiness=0' >> /etc/sysctl.conf
# 执行以下命令,可以让修改立即生效
sysctl -p
Cloudera建议将交换空间设置为0,过多的交换空间会引起GC耗时的激增。
临时生效
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
给该文件赋予执行权限
chmod +x /etc/rc.local
最大可打开文件数,进程数,内存占用调整
vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 1024999
* soft nproc 65535
* hard noroc 65535
* soft memlock unlimited
* hard memlock unlimited
查看是否生效
ulimit -a
重启机器,使上面的所有调整均生效。
参考文档:https://blog.csdn.net/u012443641/article/details/126147592
vim /etc/profile
# hadoop
export HADOOP_CLASSPATH=`hadoop classpath`
#hadoop 安装目录
export HADOOP_HOME=/opt/cloudera/parcels/CDH/lib/hadoop
export HADOOP_CONF_DIR=/etc/hadoop/conf
export HIVE_HOME=$HADOOP_HOME/../hive
export HADOOP_HDFS_HOME=$HADOOP_HOME/../hadoop-hdfs
export HADOOP_MAPRED_HOME=$HADOOP_HOME/../hadoop-mapreduce
export HADOOP_YARN_HOME=$HADOOP_HOME/../hadoop-yarn
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
参考文档:https://blog.csdn.net/u012443641/article/details/126147592
找一个节点安装上 mysql 服务即可。
由于该 CDH 版本已经比较老了,不支持 mysql8,安装 mysql-5.7.x 最新版即可。
创建 CDH 的元数据库和⽤户、amon 服务的数据库及⽤户。
使用 root 用户登录mysql,然后执行以下命令
-- 创建需要的数据库
create database cmf DEFAULT CHARACTER SET utf8;
create database amon DEFAULT CHARACTER SET utf8;
-- 创建用户并允许远程登录
create user 'cmf'@'%' IDENTIFIED WITH mysql_native_password by 'cmf';
create user 'amon'@'%' IDENTIFIED WITH mysql_native_password by 'amon';
-- 授权
grant ALL PRIVILEGES ON cmf.* to 'cmf'@'%';
grant ALL PRIVILEGES ON amon.* to 'amon'@'%';
flush privileges;
在 hadoop01 节点,也就是安装了 mysql 的节点上,放上 mysql java 驱动包。
mkdir -p /usr/share/java/
将 mysql java 驱动包拷贝到上面的目录,重命名文件,去掉版本号
cp mysql-connector-java-5.1.48.jar /usr/share/java/mysql-connector-java.jar
创建一个保存 rpm 包的目录
mkdir /opt/cloudera-manager
server 节点上传
cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm
agent 节点上传
cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm
选择 hadoop01 为cm server,然后执行以下命令:
yum -y localinstall cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
yum -y localinstall cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm
所有节点都要安装 agent。
注意:server 节点,上面已经安装过了 daemons,这儿不需要重新安装了。
yum -y localinstall cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
yum -y localinstall cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm
所有节点修改 agent 的配置,指向 server 的节点 hadoopa01。
一定要注意下面的 hadoop01 主机名,要修改为你的 server 节点所在的主机名。
sed -i "s/server_host=localhost/server_host=hadoop01/g" /etc/cloudera-scm-agent/config.ini
节点的主机名,如果第一次运行时没注意到,可以直接进入对应的配置文件进行修改。
vim /etc/cloudera-scm-server/db.properties
com.cloudera.cmf.db.type=mysql
com.cloudera.cmf.db.host=hadoop01
com.cloudera.cmf.db.name=cmf
com.cloudera.cmf.db.user=cmf
com.cloudera.cmf.db.password=cmf
com.cloudera.cmf.db.setupType=EXTERNAL
在 hadoop01 节点部署离线 parcel 源。
yum install -y httpd
mkdir -p /var/www/html/cdh6_parcel
cp CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel /var/www/html/cdh6_parcel
cp CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1 /var/www/html/cdh6_parcel/CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha
cp manifest.json /var/www/html/cdh6_parcel
移动 sha1 名称⽂件时,需要重命名,去掉最后的1,不然在部署过程中,CM 会认为如上⽂件下载不完整,会重新下载。
systemctl start httpd
然后通过该链接查看是否可以访问:http://hadoop01/cdh6_parcel。
在 hadoop01 节点,也就是安装了 cm server 服务的节点运行以下命令
systemctl enable cloudera-scm-server
systemctl start cloudera-scm-server
查看日志
cd /var/log/cloudera-scm-server
tail -f cloudera-scm-server.log
阿⾥云 web 界⾯,需要设置该 hadoop01 节点防⽕墙放开 7180 端⼝。
等待1min,打开 http://hadoop01:7180 页面,账号密码:admin/admin,不着急登录,启动完所有 agent 之后再登录。
如果打不开,去看 server 的 log,根据错误仔细排查错误。
所有节点上都要执行:
systemctl enable cloudera-scm-agent
systemctl start cloudera-scm-agent
http://hadoop01:7180/
账号密码:admin/admin
欢迎使⽤ Cloudera Manager,最终⽤户许可条款与条件,勾选。
欢迎使⽤ Cloudera Manager,您想要部署哪个版本?选择 Cloudera Express 免费版本。
在 CM ⾥添加⼀个集群
修改集群名称
这个名称会显示在主页面
添加需要管理的主机
如果有某些主机没有在这儿显示,则需要去对应主机上查看 agent 服务是否启动成功。
选择存储库
选择更多选项,我们使用 httpd 来安装
如果上面图片中配置正确,过一会儿,页面就会变成下面这样
勾选 CDH-6.3.2-1.cdh6.3.2.p0.1605554,然后继续安装。
安装Parcels
在这个页面一直等待即可,直到全部成功。
然后进行网络和hosts检查
然后通过显示检查器结果,来查看监察出的错误,并进行修复。
修复上面的错误:
Psycopg2
Psycopg2 这个错误,是和 pig、hue 等 sql 编写调用相关的,如果集群用到了这些,可以进行修复。注意需要在每台机器上执行。
安装服务
yum install postgresql-server
pip install psycopg2==2.7.5 --ignore-installed
echo 'LC_ALL="en_US.UTF-8"' >> /etc/locale.conf
su -l postgres -c "postgresql-setup initdb"
修改配置1
vim /var/lib/pgsql/data/pg_hba.conf
修改配置 2
小集群(小于1000节点)配置如下,大集群(超过1000节点),参考官网:https://docs.cloudera.com/documentation/enterprise/6/latest/topics/cm_ig_extrnl_pstgrs.html#id_inq_bgy_52b
vim /var/lib/pgsql/data/postgresql.conf
max_connection = 100
shared_buffers = 256MB
wal_buffers = 8MB
checkpoint_segments = 16
checkpoint_completion_target = 0.9
重启
systemctl enable postgresql
systemctl restart postgresql
创建数据库
根据需要参考官网创建即可。
选择服务
根据自己的集群需要选择需要安装的组件服务即可。
自定义角色分配
按照需要分配即可。
数据库设置
这儿使用的数据库为 amon。
审核更改
如果机器有多块磁盘,则需要更改 DataNode 数据目录,配置多个目录,使用英文逗号隔开,其他的按照需要配置即可。
注意配置的目录,需要有足够的磁盘空间。
首次运行
等待全部启动成功即可,如果有失败项,查看具体日志,然后排错即可。
启动成功
修复警告等
点开每一项警告,根据提示进行修改即可。
以下所有操作在新节点执行即可。
执行前面《机器基础调整》中所有步骤,并且部署 JDK。
创建一个保存 rpm 包的目录
mkdir /opt/cloudera-manager
上传
cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm
安装 CDH 的 daemon 和 agent 服务。
yum -y localinstall cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
yum -y localinstall cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm
修改 agent 的配置,指向 server 节点 hadoopa01
一定要注意下面的 hadoop01 主机名,要修改为你的 server 节点的主机名,如果第一次运行时没注意到,可以直接进入对应的配置文件进行修改
sed -i "s/server_host=localhost/server_host=hadoop01/g" /etc/cloudera-scm-agent/config.ini
systemctl stop cloudera-scm-agent
systemctl enable cloudera-scm-agent
systemctl start cloudera-scm-agent
systemctl status cloudera-scm-agent
去CDH界面观察主机列表
检测到主机正常运行,需要一些时间,等待即可。
将新增主机加入集群。
所有机器新增组件角色,全部在 CDH 页面操作,主要新增角色为:
新增 yarn 角色后,需要新增对应新节点的角色组。
需要修改的配置有:节点分配给容器的内存、CPU,yarn 对节点 cpu 的使用限制。