ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CDH6.3.2搭建

2022-04-03 19:35:00  阅读:390  来源: 互联网

标签:scm cloudera EXISTS CDH6.3 CREATE yum 节点 搭建


一、集群规模确定

CDH体系结构

 

从数据量、计算性能要求、可靠稳定性、容错性等方面考虑。

  • 数据量
  • 现有数据量(如现有历史数据)和增量数据(日增、月增数据,一般需要考虑满足1-2年的容量,后续再扩容);
  • 数据的副本数(Hadoop默认3副本,乘3倍);
  • 数据清洗、融合加工处理、共享等过程产生的,中间表、指标表、主题/专题库等表(乘3-5倍)。注意:HDFS上不同格式的表压缩比也不一样,如文本txt表不压缩,orc有一定的压缩比(1:3),HBase(看是否采用压缩),ES看索引是否有膨胀;
  • 储存的冗余量 + 20-30%;
    如:现有各种形式的数据量总共30TB,月增数据1TB(算未来24个月),全部都要放到HDFS中存储,默认3副本,ETL数据处理全部用txt表(共享服务HBase、ES等混用)就按照1:1的压缩比储存,算上ODS、清洗融合加工中间表、指标表、主题库/专题课等取4倍。如下计算:
    (30 + 1* 24) * 3 * 4 * 1.25 = 810 TB
    需要总的磁盘空间810TB,如果是10个数据储存节点,那么每个节点至少要大于81TB的空间,可以挂 9块* 10TB。
  • 计算
    根据使用到的大数据组件服务来预估
    如基于内存的服务对内存的要求,对磁盘IO使用比较频繁的是否考虑多块盘,清洗融合加工频繁的对cpu的要求等等
  • 可靠稳定性
    集群规模大的,需要区分管理节点、数据储存和计算节点(或者叫工作节点)。
  • 容错性
    如果考虑对各个服务或者某些服务做HA的,需要再考虑加节点资源。
    如果考虑做灾备集群的,需要再加1倍的资源。
    此外,还要考虑网络,是否是双网口?千兆还是万兆网络?
从上面几方面确定集群规模,节点数、每个节点的物理配置(CPU、Memery、磁盘空间)、集群网络等

 

软件版本

 

需要注意的是CDH版本和mysql的对应关系,6.3.2最高对应mariadb10.1,不能兼容更高的版本,否则会出错。通过官网查看,目前cdh6不支持mariadb10.4版本,后来改为10.1版本后正常启动

参考文档: https://docs.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_database_requirements.html#cdh_cm_supported_db

                  https://blog.51cto.com/jinkcloud/2482685?source=drt

二、环境准备

1.CDH安装包下载

CDH官方的网站已经无法直接下载安装包了(需要账号密码),需要找一些之前下载过的人索取。

链接:https://pan.baidu.com/s/1dpyhF6TRXaqryab6ZVVXfw 
提取码:1cuo 

CM

CDH

2.安装配置操作系统

安装CentOS 7.9

注意分区参考:

/boot 1G
/swap 8G
/ 剩余全部给根目录

注意:
如果没有在装机的时候分割出来,可以考虑添加8G的swap分区,参考下面方法:
https://www.cnblogs.com/CandiceW/p/10317918.html

使用dd命令创建名为swapfile 的swap交换文件(文件名和目录任意):
dd if=/dev/zero of=/var/swapfile bs=1024 count=8192k
对交换文件格式化并转换为swap分区:
mkswap /var/swapfile
挂载并激活分区:
swapon /var/swapfile
听从系统的建议修改下权限:
chmod -R 0600 /var/swapfile
修改 fstab 配置,设置开机自动挂载该分区:
echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab

配置静态IP

[root@master1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp0s3 
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="enp0s3"
UUID="9c969854-3983-40d0-998b-31659eb363a8"
DEVICE="enp0s3"
ONBOOT="yes"
IPV6_PRIVACY="no"
IPADDR=192.168.50.189
NETMASK=255.255.255.0
GATEWAY=192.168.50.1
DNS1=192.168.50.1
DNS2=192.168.50.1

##########重启network#################
[root@master1 ~]# systemctl restart network

配置yum源

下载新的阿里云yum源

wget  http://mirrors.aliyun.com/repo/Centos-7.repo

清除缓存

yum clean all # 清除系统所有的yum缓存
yum makecache # 生成yum缓存

配置Ip与主机名映射

[root@master1 ~]# cat /etc/hosts

192.168.50.189  master1.cluster  master1
192.168.50.190  worker1.cluster  worker1
192.168.50.191  worker2.cluster  worker2
192.168.50.192  worker3.cluster  worker3

配置无密码登录

###安装Cloudera Manager本身并不需要ssh无密码登陆,这里做配置主要是为了后续配置集群方便。实现多个机器的ssh免密码登录的核心思想是把每一个机器的rsa公钥集中到一个文件中,并且把这个文件分发到所有的机器上面去。

详细配置链接:https://blog.csdn.net/wjzholmes/article/details/100415396

mkdir -p /root/.ssh
进入/root/.ssh/目录下执行命令生成id_rsa.pub文件 ssh-keygen -t rsa ###之后一路回车,产生秘钥
并将秘钥追加至authorized_keys文件中 cat id_rsa.pub >> authorized_keys ###在.ssh文件下运行此命令
将此节点authorized_keys文件传至下一台机器 scp authorized_keys root@worker1:/root/.ssh

以此类推,将每台机器文件追加并传至下一台机器,然后将最后一台机器的秘钥再分发到每台机器中。

禁用防火墙 (所有节点执行)

在所有节点上关闭防火墙

systemctl status firewalld           检查防火前状态
systemctl stop firewalld             关闭防火墙
systemctl disable firewalld         主机重启自动关闭防火墙

禁用SELinux(所有节点执行)

在命令行运行:

sed -i 's/^SELINUX=.∗/SELINUX=disabled/g' /etc/selinux/config
setenforce 0,使其立即生效

修改/etc/selinux/config文件(在某些系统中,可能是/etc/sysconfig/selinux文件),将SELINUX=enforcing修改为SELINUX=disabled
更新配置之后要重启服务器生效。

设置swap空间、关闭大页面压缩

1.swap空间设置
swappiness=0:表示最大限度使用物理內存,之后才是swap空间;
swappiness=100:表示积极使用swap分区,並且把內存上的数据及时转移到swap空间;
如果是混合服务器,不建议完全禁用swap,可以尝试降低swappiness。

Cloudera 建议将 /proc/sys/vm/swappiness 设置为 10(也有说改为0的,Cloudera建议将交换空间设置为0,过多的交换空间会引起GC耗时的激增。)。当前设置为 60。使用 sysctl 命令在运行时更改该设置并编辑 /etc/sysctl.conf 以在重启后保存该设置。
echo 10 > /proc/sys/vm/swappiness
这样操作重启机器还是还原,要永久改变:
echo "vm.swappiness = 10" >> /etc/sysctl.conf

2.已启用透明大页面压缩,可能会导致重大性能问题,建议禁用此設置。
调整:
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled

加入启动生效配置中
[root@master1 ~]# cat /etc/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

设置用户最大可打开文件数,进程数,内存占用(所有节点)

vi /etc/security/limits.conf

*    soft    nofile   32728
*    hard    nofile   1024999
*    soft    nproc   65535
*    hard    noroc    unlimited
*    soft    memlock    unlimited
*    hard    memlock    unlimited

NTP服务安装和设置

Hadoop对集群中各个机器的时间同步要求比较高,要求各个机器的系统时间不能相差太多,不然会造成很多问题。可以配置集群中各个机器和互联网的时间服务器进行时间同步,但是在实际生产环境中,集群中大部分服务器是不能连接外网的,这时候可以在内网搭建一个自己的时间服务器(NTP服务器),集群的各个机器与这个时间服务器进行时间同步。我们选择其中一个节点cdh01机器作为NTP服务器,其他机器和它自动同步。

安装NTP(所有节点)
yum -y install ntp

添加以下NTP服务器
server http://ntp.aliyun.com

重新启动 ntp 服务和设置开机自启(所有节点):
service ntpd restart
systemctl enable ntpd.service

查看和测试:

ntpdc -c loopinfo #查看与时间同步服务器的时间偏差
ntpq -p #查看当前同步的时间服务器
ntpstat #查看状态定时同步crontab
crontab -e #可以不用设置
10 * * * * /usr/sbin/ntpdate master1

配置和安装CDH

1.配置CM源

注意:操作系统可以先配置本地yum。CDH的安装包都是rpm包。如果使用rpm安装方式安装起来是比较复杂的,会有很多依赖问题需要解决,就需要使用yum帮助我们解决依赖问题。(也可以是在线的阿里yum源,之前在按照好操作系统之后已经设置了aliyun的yum,所有这里省略centos yum源)

配置CM源:

在cdh01节点上安装并启动httpd

#安装
yum install httpd
#启动
service httpd start
#开机自启
systemctl enable httpd
或者chkconfig httpd on
cd /var/www/html/进入到这个目录下
mkdir cm6; mkdir cdh6
#将cdh的安装包和cm的包拷贝到创建的目录
#拷贝cm安装包和jdk到cm6
cp cloudera-manager-* /var/www/html/cm6/
cp enterprise-debuginfo-6.3.1-1466458.el7.x86_64.rpm /var/www/html/cm6
cp oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm /var/www/html/cm6
#拷贝cdh安装包和元数据文件
cp CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel /var/www/html/cdh6/
cp manifest.json /var/www/html/cdh6/

安装createrepo命令,然后进入到cm6目录创建yum源
yum install -y createrepo #下载createrepo
cd /var/www/html/cm6 #命令进入到cm6安装包的httpd资源位置
createrepo . #创建yum源的描述meta

配置yum源(每个节点)
cat >> /etc/yum.repos.d/cm.repo << EOF

[CM]
name=cm6
baseurl=http://cdh01/cm6/
gpgcheck=0
EOF

查看yum配置源是否生效
yum clean all
yum repolist

安装Mariadb(master1)

#设置yum源

[root@master1 ~]# cat /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1


#安装 yum install -y MariaDB-server MariaDB-client MariaDB-compat MariaDB-devel MariaDB-common MariaDB-shared #启动和开机自启 systemctl start mariadb && systemctl enable mariadb #配置Mariadb数据库 mysql_secure_installation #可以在遇[Y/n]输入y设置密码 [账号/密码:root/root]

初始化管理节点数据库(master1)

mkdir -p /usr/share/java
cp /mnt/lb/mysql-connector-java-5.1.34.jar /usr/share/java/mysql-connector-java.jar(这里需要分发到所有节点)
#创建CDH各服务使用的数据库
-- 1. scm
DROP DATABASE IF EXISTS scm;
CREATE DATABASE IF NOT EXISTS scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

DROP USER IF EXISTS 'scm'@'%';
CREATE USER IF NOT EXISTS 'scm'@'%' IDENTIFIED BY 'Bdpp1234!';
GRANT ALL PRIVILEGES ON scm.* TO 'scm'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

-- 2. amon

DROP DATABASE IF EXISTS amon;
CREATE DATABASE IF NOT EXISTS amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

DROP USER IF EXISTS 'amon'@'%';
CREATE USER IF NOT EXISTS 'amon'@'%' IDENTIFIED BY 'Bdpp1234!';
GRANT ALL PRIVILEGES ON amon.* TO 'amon'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

-- 3. rman

DROP DATABASE IF EXISTS rman;
CREATE DATABASE IF NOT EXISTS rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

DROP USER IF EXISTS 'rman'@'%';
CREATE USER IF NOT EXISTS 'rman'@'%' IDENTIFIED BY 'Bdpp1234!';
GRANT ALL PRIVILEGES ON rman.* TO 'rman'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

-- 4. hue

DROP DATABASE IF EXISTS hue;
CREATE DATABASE IF NOT EXISTS hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

DROP USER IF EXISTS 'hue'@'%';
CREATE USER IF NOT EXISTS 'hue'@'%' IDENTIFIED BY 'Bdpp1234!';
GRANT ALL PRIVILEGES ON hue.* TO 'hue'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

-- 5. hive

DROP DATABASE IF EXISTS hive;
CREATE DATABASE IF NOT EXISTS hive DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

DROP USER IF EXISTS 'hive'@'%';
CREATE USER IF NOT EXISTS 'hive'@'%' IDENTIFIED BY 'Bdpp1234!';
GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

-- 6. sentry

DROP DATABASE IF EXISTS sentry;
CREATE DATABASE IF NOT EXISTS sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

DROP USER IF EXISTS 'sentry'@'%';
CREATE USER IF NOT EXISTS 'sentry'@'%' IDENTIFIED BY 'Bdpp1234!';
GRANT ALL PRIVILEGES ON sentry.* TO 'sentry'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

-- 7. nav

DROP DATABASE IF EXISTS nav;
CREATE DATABASE IF NOT EXISTS nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

DROP USER IF EXISTS 'nav'@'%';
CREATE USER IF NOT EXISTS 'nav'@'%' IDENTIFIED BY 'Bdpp1234!';
GRANT ALL PRIVILEGES ON nav.* TO 'nav'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

-- 8. navms

DROP DATABASE IF EXISTS navms;
CREATE DATABASE IF NOT EXISTS navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

DROP USER IF EXISTS 'navms'@'%';
CREATE USER IF NOT EXISTS 'navms'@'%' IDENTIFIED BY 'Bdpp1234!';
GRANT ALL PRIVILEGES ON navms.* TO 'navms'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

-- 9. oozie

DROP DATABASE IF EXISTS oozie;
CREATE DATABASE IF NOT EXISTS oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

DROP USER IF EXISTS 'oozie'@'%';
CREATE USER IF NOT EXISTS 'oozie'@'%' IDENTIFIED BY 'Bdpp1234!';
GRANT ALL PRIVILEGES ON oozie.* TO 'oozie'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
#执行数据库初始脚本
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql -h localhost -uroot -pshdata --scm-host localhost scm root root
注意:初始化完成之后,登录的root账号的密码变成了root,可以根据scm_prepare_database.sh脚本分析出来

安装其他的agent节点(work1、work2、work3)

#安装
yum install -y oracle-j2sdk1.8.x86_64
#安装agent
yum install cloudera-manager-daemons cloudera-manager-agent -y

修改配置文件(所有节点)

修改Cloudera Agent配置文件/etc/cloudera-scm-agent/config.ini,配置server_host为主节点cdh01
#通过vi命令修改
vi /etc/cloudera-scm-agent/config.ini
server_host=cdh01
#也可以通过sed命令修改(推荐)
sed -i "s/server_host=localhost/server_host=cdh01/g" /etc/cloudera-scm-agent/config.ini

配置JAVA_HOME(所有节点)

vi /etc/profile
#add for JAVA_HOME
export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera/
export PATH=PATH:PATH:PATH:JAVA_HOME/bin

启动CDH

1.启动Cloudera Manager(cdh01)
#启动
service cloudera-scm-server start //systemctl start cloudera-scm-server
#设置开机自启???
chkconfig cloudera-scm-server on //systemctl enable cloudera-scm-server
2.启动Cloudera Agent(所有节点)
#启动
service cloudera-scm-agent start //systemctl start cloudera-scm-agent
#开机自启
//systemctl enable cloudera-scm-agent

可以访问http://192.168.100.10:7180 进行组件服务的安装操作了
用户名/密码: admin/admin

Web页面安装配置

大部分按照常规的设置即可。
以下是特别的地方做下记录。

1.集群名字

Cluster_shdata

2.选择储存库时,远程库的设置

点击这里之后,设置远程库特别注意一下(根据知乎同学的反馈,借用截图。于20210604修改)

借用的截图说明下,下面这个远程Parcel储存库URL就保留一个,用本地的那个parcel,修改成http://cdh01/cdh6就可以了,不要连CDH官网的了地址。

 

 

选择之前建立好的mysql中的数据库,并测试数据库连接:

 

这里参考《大数据平台架构与实现》只安装Zookeeper、HDFS、Yarn、Hive、HBase、Spark、Oozie、Kafka、Hue。

 

 

安装完成后界面如下:

安装遇到的问题

1 安装CDH时候出现主机运行状态不良情况
问题:通过Cloudera WEB界面安装Hadoop过程中,在安装Parcel步骤时,一个节点分配激活失败,报错信息显示”主机运行状况不良
分析:
CM的集群是Server-Agent模式的,那么必须有一个唯一的id来标识Server和Agent属于同一个集群,在Agent端就是使用cm_guid文件来记录id的。
假设server端重新安装了一遍,重新构建集群,而agent没有重新安装,那么他们的id是一定不同的,就会造成主机运行状况不良的异常。
解决方法:
删除agent目录下面的cm_guid文件,并重启失败节点的agent服务恢复
find / -name cm_guid
rm -rf /var/lib/cloudera-scm-agent/cm_guid
systemctl restart cloudera-scm-agent
解决方案参考以下链接:
https://blog.csdn.net/holdbelief/article/details/80287471

2 Required List parameter 'hosts[]' is not present
问题:安装cdh的parcel包下一步时显示 Required List parameter 'hosts[]' is not present的报错

解决方法:

查看日志,跟manifest.json文件有关,删除/opt/cloudera/parcel-repo/目录下的manifest.json文件,重新上传。

重启cloudera-scm-server,报错解决。

参考: https://blog.csdn.net/wjzholmes/article/details/106079673

 

 3.safemode: Access denied for user root. Superuser privilege is required

因磁盘空间不足,内存不足,系统掉电等其他原因导致dataNode datablock丢失。

原因分析(Cause Analysis)*

由于系统断电,内存不足等原因导致dataNode丢失超过设置的丢失百分比,系统自动进入安全模式

解决办法(Solution)*

安装HDFS客户端,并执行如下命令:

                                步骤 1     执行命令退出安全模式:hadoop dfsadmin -safemode leave

                                步骤 2     执行健康检查,删除损坏掉的block。

                                   hdfs fsck -list-corruptfileblocks

                                   hdfs fsck  /  -delete

 参考:https://blog.csdn.net/czp11210/article/details/76695745

 

4.Hue: Thrift Server role must be configured in HBase service to use the Hue HBase Browser application

 解决办法:
在这里插入图片描述
重启hue之后,还有红色感叹号!,看下图解决
在这里插入图片描述

 参考: https://blog.csdn.net/weixin_43970277/article/details/116226464

 

其余问题参考:https://blog.csdn.net/weixin_39338423/article/details/108402582

 

 参考:

https://zhuanlan.zhihu.com/p/366308900

https://blog.csdn.net/qq_40856560/article/details/109007683

https://www.cnblogs.com/swordfall/p/10816797.html

https://www.cnblogs.com/dengbangpang/p/13224244.html

https://blog.csdn.net/wsdc0521/article/details/108366867

标签:scm,cloudera,EXISTS,CDH6.3,CREATE,yum,节点,搭建
来源: https://www.cnblogs.com/sfnz/p/16096876.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有