如果你的虚拟机给的内存少于14G,不用往下看了,机器压力非常大,建议先装内存条。

我们做大数据的,机器就是要大硬盘,大内存,高核cpu,其他无所谓,如果要做机器学习,那你显卡还得很好。

cdh的好处,一键启动和关闭组件,可以拓展各种组件,可以直接查看某个组件的日志,以及监控状态。核心就是不需要你在去用命令启动,和关闭。最好的,我觉得是,比如你hbase出了问题,要去维护,你不需要手动先去关闭hdfs、hive等,你只用点一下关闭hdfs的按钮,他会自动帮你先去关闭哪些依赖的组件,如果你点的是关闭hbase集群,你不需要一台一台点,也不用自己写脚本,他也会帮你挨着关闭。启动也是一样。

目录

如果你的虚拟机给的内存少于14G,不用往下看了,机器压力非常大,建议先装内存条。

我们做大数据的,机器就是要大硬盘,大内存,高核cpu,其他无所谓,如果要做机器学习,那你显卡还得很好。

前言

配置与安装要求

硬件要求:

虚拟机配置:

资源准备:

cm资源准备:

cdh资源准备:

mysql资源准备:

虚拟机搭建以及修改网卡(其中的centos7):

集群基础环境搭建

安装步骤介绍

正式开始安装

免密登录

关闭selinux和swap(所有节点)

httpd安装与yum.repo配置(含cdh服务安装)

上传资源

分发脚本的修改

将tools中的

sh /ssync /software/

关闭防火墙(所有节点)

http服务搭建

cdh本地存储库建立与cm安装

建立cm库

建立cdh库

创建cloudera-repo本地仓库位置

本地yum源配置

安装jdk

安装jdk(所有节点)

配置环境变量

分发

更新环境变量,并验证(所有节点)

安装Cloudera Manager

Mysql配置

mysql跳过ssl验证

​编辑

 创建cdh集群所需要的库

几个需要干的事

执行scm数据库建立脚本

脚本是否执行成功校验

hostname、network、host同步

cdh组件集群

cdh基本环境配置

启动cdh

​编辑进入页面192.168.30.101:7180

 选择社区版本

选择机器

存储库设定

选择自定义存储库

Parcel包选择

 继续安装,输入密码,他自动通过多线程安装

检查主机

第一个问题(每台机器)

第二个问题(每台机器)

Parcel集群组件服务选择

数据库设置

hive元数据配置、hue、ooize

点击测试连接

 hdfs配置,选择默认

 目录记录

继续

等他安装

进行排错

zk问题

节点问题

hdfs问题

cloudera Service 

问题汇总

httpd问题

httpd访问界面Testing123

cdh安装问题

执行 sudo yum -y install cloudera-manager-daemons cloudera-manager-server出现拒绝连接

没有可用软件包 cloudera-manager-daemons。没有可用软件包 cloudera-manager-agent。错误:无须任何处理

cdh scm_prepare_database.sh脚本执行后没有反应,mysql的scm库中没有相关表

cdh执行/opt/cloudera/cm/schema/scm_prepare_database.sh出现错误

cdh界面,勾选集群,当前受管

 Cdh中Parcel存储库界面,遭遇页面不能点击继续

 遇到install时,一个节点卡死,很慢,一直等着激活

新篇:

云服务器篇(阿里云,腾讯云,内外网双ip必看)

翻到最下面


前言

时隔2年,重新复习一遍

6.3是社区的免费版,再往后是收费版

文档老了,花了2天,解决完所有bug,先来一张图

又花了1天,把集群内部东西全部修复

我打算全部删除,重新来一次,文档要修改的非常细,这样我以后就可以3小时内搭完。


配置与安装要求

硬件要求:

官方建议,主节点内存32GB,2核心以上,从节点16GB,2核以上

虚拟机化测试,官方建议,社区版,最低要求每台8G,企业版最低要求,10G

经过测试,发现只有主节点要求高,从节点不需要太高

本人硬件:32GB内存,16核cpu的笔记本电脑。

虚拟机配置:

节点名称硬盘内存
hadoop1150G12G
hadoop250G6G
hadoop350G6G

主节点内存要大于12G,(如果是三台机器的话,那么主节点的压力很大,建议内存是从节点的两倍)

从节点,我使用后发现,给的8G完全够了,所以这次给6G

hive安装的话,官方建议最低核数为4,所以建议主节点给4核,其他2核

cdh建议,datanode至少3个,主节点1个,从节点2个。如果datanode也放在主节点上,那么内存就不够了,就会全部预警。实际开发中,至少4台,但是我们内存有限就3台虚拟机,所以datanode还是只给2个

资源准备:

 下载地址:  Index of /test/cdh6

由于cdh在线安装会由于网络原因失败,自己建立本地httpd,进行安装。所以需要下载所有相关的资源。

cm资源准备:

他是cdh管理平台的相关安装包

cdh资源准备:

他是cdh的parcel包,里面包含各种大数据组件的安装包(如hdfs、hive、zookeeper、hbase、spark...)

什么hdfs,hive都在这个压缩文件里

mysql资源准备:

cm管理和监控 大数据组件,需要通过mysql进行监控,并且像hive(存储元数据)、hue这些组件需要依赖于外部mysql

我选择的mysql是外部安装(没有什么压力的节点),没有装在cdh的节点,这样就可以防止当某台节点过大,挂了,导致mysql挂,而mysql又是其他节点的元数据,引起都挂的情况

 工具资源;

自己写的同步文件脚本,mysql-connector-java-5.1.47.jar(cdh与mysql通信需要这个),指定版本jdk(cdh对jdk要求很严,sun公司的jdk几乎都不支持)

虚拟机搭建以及修改网卡(其中的centos7):

vmware虚拟机安装教程-边搭边写_我要用代码向我喜欢的女孩表白的博客-CSDN博客

搭建3台,hadoop1(12g,150gb,4核),hadoop2(6g,50gb,2核),hadoop3(6g,50gb,2核)

若为正式环境,按自己需求配置,cdh6建议不少于5台datanode

集群基础环境搭建

安装步骤介绍

免密登录

hdfs和其他通信是通过ssh,如果不配置,则每次心跳感应,需要你输入密码

关闭selinux和swap

关闭selinux(cdh官方等都建议关闭它,它的作用是限制资源访问,比如给你的impala限制了资源,由于impala用户权限低,查询就会很慢,失去了它的作用)

关闭swap(避免交换内存,默认是开启,如果你内存不够,那么他就会先写到磁盘上,然后释放的时候,会将磁盘中的内存,加载了内存中,如果磁盘中的消耗的资源大于内存,结果就是宕机,关闭后,相当于是一种保护策略)

httpd安装与yum.repo配置(含cdh服务安装)

我通过本地yum,访问httpd源,进行安装,全部都是本地环境进行下载,所以快,cdh安装自定义源也是httpd,这一步也会对cdh进行安装,包含关闭防火墙,关闭后,所有端口都可以访问,就可以通过我的windows访问服务端的httpd,cdh页面,服务端也能访问mysql

hostname、network、host同步

不配置的话,在cdh页面安装时会出现agent心跳接收不到,而且hosts必须是faq写法(就是ip 域名 别名),如果域名和别名名字不一样,会出现警告

mysql安装与scm脚本执行

这步会提前创建好,各个大数据组件的mysql库,并且会执行scm脚本,检测方式是,如果成功,启动cm-server后,则会在scm库下出现各种cdh的日志监控表,这个成功了,才能通过7180接口,进入到cdh界面

cdh启动

启动cm-server还有cm-agent

页面组件安装

如果上面步骤都成功了,则可以进入可视化的网页进行部署了

正式开始安装

免密登录

通过ssh生成密钥(所有节点)

如果你是root账户的权限,没有root的密码,如果你有密码可以跳过这个操作


则创建一个账户,给一个无密码的sudo权限,切记一定要在root账户下操作,否则将会导致sudo异常。

su root 或者sudo -i 进入root权限

创建用户

useradd cdh

passwd cdh

输入密码(2次)

修改权限

visudo或者vi etc/sudoers

cdh     ALL=(ALL)       NOPASSWD:ALL


ssh-keygen

遇到提示全部按enter

发送密钥到其他节点

在hadoop1(就是101)节点 执行,他问你问题,你就yes,过程中需要输入其他节点的密码

ssh-copy-id 192.168.30.102

如果出现Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
 


sudo -i

vi /etc/ssh/sshd_config

配置改成

PasswordAuthentication yes
 

重启

systemctl restart sshd.service


ssh-copy-id 192.168.30.103

这样从hadoop1通过ssh到hadoop2和hadoop3就不需要密码

同样在hadoop2执行

ssh-copy-id 192.168.30.101

ssh-copy-id 192.168.30.103

在hadoop3执行

ssh-copy-id 192.168.30.101

ssh-copy-id 192.168.30.102

如果节点很多,建议写个脚本,最后单元测试下,看看是否能跳转成功,避免后续因为这个问题,找不到原因,力求,每步都是对的。

关闭selinux和swap(所有节点)

关闭selinux

先临时关闭

setenforce 0

在永久关闭

vi /etc/selinux/config

修改SELINUX为disabled,并且注释掉之前的enforcing

这里我用了同步脚本(ssync,作用就是将文件,复制到其他节点),由于里面都是相同内容,我才使用。使用同步脚本前,先看旁边的脚本说明

关闭swap(所有节点)

临时关闭

swapoff -a

永久关闭

vi /etc/fstab

注释掉swap这一行

登录到其他节点,执行临时关闭,并注释掉这一行不能使用同步脚本,因为每个节点的uuid不同)

httpd安装与yum.repo配置(含cdh服务安装)

上传资源

创建software目录

mkdir /software

将资源复制到这个目录下,由于编码问题,我复制过去,改成了英文

cm6,cdh6,tools 分别对应 cm管理平台资源,cdh大数据组件资源,cdh工具资源

分发脚本的修改

将ssync复制到根目录

cd /software/

cp ssync /

分发脚本步骤

配置节点ip特殊说明

vi /ssync

 将/software资源通过ssync发送到其他节点

将tools中的

sh /ssync /software/

关闭防火墙(所有节点)

#关闭防火墙
systemctl stop firewalld.service
#查看防火墙状态
systemctl status firewalld.service
#永久关闭防火墙(其实就是关闭后,设置开机不自动启动)
systemctl disable firewalld.service

windows本地防火墙也要关闭,集群要与本地mysql元数据通信(我是windows上的mysql作为集群元数据)

http服务搭建

安装httpd

选择任意一台机器安装,我选择的101节点

# 安装httpd,安装本地仓库和Cloudera Manager Server都依赖httpd
sudo yum -y install httpd
# 启动httpd
sudo systemctl start httpd
# 查看httpd状态
service httpd status
#开机自启
sytemctl enable httpd

修改httpd配置

vi /etc/httpd/conf/httpd.conf

修改Listen端口号,默认是80,改成9999,因为我80端口在使用。

增加.parcel(这样cdh的包也能通过yml解析到)

 httpd的默认文件是/var/www/html

配置完成,重启服务,更新

sudo systemctl restart httpd

通过浏览器访问,查看是否成功

如果直接是httpd文件服务器页面,就ok,如果为Testing 123..(apache默认首页),请移步到最下方问题汇总进行解决

cdh本地存储库建立与cm安装

我们安装cdh都是离线安装,在线安装太慢,离线安装实际上也是模仿在线安装,只是把在线安装的httpd地址,改成了我们自己本地的httpd服务器。

建立cm库

httpd中的地址,我没有修改,所以文件必须放在/var/www/html默认目录下

cloudera-manager的安装包是存放在cm6目录下的

cdh大数据的相关组件是存放在cdh6目录下的

创建文件夹cm6

mkdir -p /var/www/html/cloudera-repos/cm6

进入/software目录,我上传资源的目录

--strip-components=1的意思是,直接解压内部的内容,到cm6的目录

如果不加,则会在外面创建一个目录,解压到创建的目录中,这样cdh会读取不到

-C 的意思是指定解压位置

cd /software/cm6

#解压cm压缩包,到httpd服务cm6文件夹

tar -zxvf cm6.3.1-redhat7.tar.gz -C /var/www/html/cloudera-repos/cm6/ --strip-components=1

#修改权限

sudo chmod -R ugo+rX /var/www/html/cloudera-repos/cm6

将此资源目录的2个文件也传过去

allkeys.asc 文件密钥

manifest.json 各兼容组件版本

cp allkeys.asc /var/www/html/cloudera-repos/cm6/

cp manifest.json /var/www/html/cloudera-repos/cm6/

建立cdh库

创建文件夹cdh6

mkdir -p /var/www/html/cloudera-repos/cdh6

进入cdh6资源目录

cd /software/cdh6

#将cdh资源目录的内容复制到httpd的cdh6目录中

cp * /var/www/html/cloudera-repos/cdh6/

#修改权限
sudo chmod -R ugo+rX /var/www/html/cloudera-repos/cdh6

记得,将目录中的

CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1
改成
CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha

创建cloudera-repo本地仓库位置

目录不要改变,cdh默认目录它,如果你要改变,还需要改cdh配置

这个,在cdh的页面设置parcel源的时候,指定本地地址就是它

sudo mkdir -p /opt/cloudera/parcel-repo

#将cdh资源目录下的内容复制过去

cd /software/cdh6

#将cdh资源目录的内容复制到httpd的cdh6目录中

cp * /opt/cloudera/parcel-repo

记得,将目录中的

CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1
改成
CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha

本地yum源配置

# 创建 /etc/yum.repos.d/cloudera-repo.repo 文件

vi /etc/yum.repos.d/cloudera-repo.repo

cloudera-repo.repo文件的内容如下,<web_server> 是parcel仓库服务器的主机名或ip地址,如果不是80默认端口,还需要,多加个端口号,我文章中httpd端口号为9999


[cloudera-repo]
name=cloudera-repo
baseurl=http://<web_server>/cloudera-repos/cm6/
enabled=1
gpgcheck=0
 

本地yum.repo中配置完cdh的目录后,需要分发到其他节点里
 

sh /ssync /etc/yum.repos.d/cloudera-repo.repo

安装jdk

注意:版本不能随便使用,cdh不兼容sun公司jdk,对版本要求比较苛刻

查看当前jdk
rpm -qa|grep jdk

卸载原有jdk
rpm -e --nodeps xxxx

假如你没有提前卸载,而是直接安装,如果原先的版本高于, 你现在安装的jdk版本,那你的jdk会虚假的安上去,实际上没有按上去,但是会被系统记录。你得删除原有的jdk,然后在覆盖安装rpm -Uvh才可以:

rpm -Uvh xxx.rpm --nodeps --force
然后更新环境变量
source /etc/profile

安装jdk(所有节点)

进入/software/tools资源目录

cd /software/tools

#安装

rpm -ivh oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm

配置环境变量

刚刚自动安装,目录在这  /usr/java/jdk1.8.0_181-cloudera

vi /etc/profile

里面在最后填写

export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera

export PATH=$PATH:$JAVA_HOME/bin

分发

sh /ssync /etc/profile

更新环境变量,并验证(所有节点)

source /etc/profile

java -version

安装Cloudera Manager

安装守护进程、和server以及agent

注意

server是只有101,主节点安装

agent是 所有节点,都安装

# 在cmserver服务器上安装Cloudera Manager Server
sudo yum -y install cloudera-manager-daemons cloudera-manager-server

# 在所有需要cm server监控的服务器上安装Cloudera Manager agent,101,102,103
sudo yum -y install cloudera-manager-daemons cloudera-manager-agent

Mysql配置

这里我已经在本地搭建过了mysql(传送门中的mysql是8.0,cdh6不支持8.0,只支持5.7,自己下载5.7的版本,安装步骤可以服用传送门中mysql,  mysql8.0搭建传送门

这里只说与cdh相关的部分

mysql跳过ssl验证

ssl验证,如果是http请求会被警告,而我本地没有ssl证书,那就是http请求

centos7中的是在conf中,而windows是在bin目录中自己建立的my.ini

 创建cdh集群所需要的库

sql语句(其中scm是cm平台的核心)

# 创建Cloudera组件所需的数据库
CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; 
CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;


几个需要干的事

mysql外部时间与本机是同步(所有机器)

由于是虚拟机,关机后时间就不走了。所以同步一下

yum install ntpdate -y #安装
ntpdate ntp1.aliyun.com #同步阿里云
date #查看现在时间,看看是否改变

设置对外授权,其他ip也能访问mysql,以及更新配置
 

grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;

flush privileges;

cdh要能读到mysql连接的jar包
 

创建目录(cdh读取mysql连接的目录,不能随便改变)

mkdir /usr/share/java

从tools资源包中,复制mysql到这个目录中

cd /software/tools

cp mysql-connector-java-5.1.47.jar /usr/share/java/

改名

mv /usr/share/java/mysql-connector-java-5.1.47.jar /usr/share/java/mysql-connector-java.jar

分发到其他节点

sh /ssync /usr/share/java/mysql-connector-java.jar

执行scm数据库建立脚本

主节点执行

mysql第一个参数是代表数据类型,元数据库用哪种库

scm是第二个参数,代表哪个库

root是第三个参数,代表哪个用户

-h代表是否外部数据库,如果不写默认localhost,我的是外部数据库(没有压力的节点),因为如果是放在一台中,这个节点挂了,那么他的mysql也挂,其他的服务都依赖mysql,所以都会挂。

更多详情,请查看官方文档,以及sh脚本内部

sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm root -h 192.168.30.101

输入root的密码,执行完毕

脚本是否执行成功校验

 打开mysql查看scm表是否有数据

没有数据

 重启动scm-server

sudo systemctl restart cloudera-scm-server

sudo systemctl status cloudera-scm-server


查看,发现数据刷新成功,脚本只是写入,通过systemctl,才会真正把数据写到mysql

hostname、network、host同步

cm的server和agent是通过读取host进行识别和心跳的,如果hostname和network不同步的话,会导致cdh页面安装,agent心跳感知不到

官方的hosts配置的主机名必须是fqdn(ip 域名 主机名)必须写满

这里域名要和主机名保持一致,不然会报警告

(正常情况下主机名就是域名,为了方便这里我都写主机名),

并且hostname是唯一(节点之间不能重复)

修改hosts(每台节点)

vi /etc/hosts

加入ip 节点域名 节点名称

 修改hostname(所有节点-不同节点,名称不同,如果192.168.30.101节点就是hadoop1)

hostnamectl set-hostname hadoop1

cdh组件集群

cdh基本环境配置

启动cdh

主节点启动,server和agent

service cloudera-scm-server start

service cloudera-scm-agent start

其他节点全部启动agent

service cloudera-scm-agent start

进入页面192.168.30.101:7180

初始账号、密码都是admin


 选择社区版本

 集群名称

选择机器

【1-3】代表搜索1-3

 点击继续

存储库设定

选择自定义存储库

和我们之前搭好的httpd对应

 地址与httpd对应

Parcel包选择

 CDH and other software 选择使用 Parcel包

更多选项里,删除所有远程parcel存储库的URL(下载不下来的,因为官方很慢)

选择我们对应的httpd地址,复制到下面的URL中(橙色部分)

 配置成功没有问题的话,CDH版本下面会出现

 继续安装,输入密码,他自动通过多线程安装

我这里密码一样,方便使用

非root用户,需要配置无密码sudo,如果你是root则可以跳过下面这段


sudo vi /etc/sudoers(每台机器)

root    ALL=(ALL)       NOPASSWD:ALL

service ALL=(ALL)       NOPASSWD:ALL
 #service是我的非root用户


如果多台机器root密码不同,需要修改成相同,才能安装,修改后要重启agent,

不需要重启server,重启完agent后,直接在cdh页面点击重试

上面步骤如果没有错误,就会像我一样,安装过程不会遇到问题

如果机器里面以前装过mysql需要注意,查看

yum的mysql.repo中是否设置成gpgcheck=0,修改为0后还要进行重启agent

 之后他会自动进行下一步安装,此时你应该能听到,散热器发出的声音

检查主机

跟着他的点就行了(把页面的检查网络性能检查主机都点),我这是点击了,网页翻译后

遇到警告

显示检查器结果

第一个问题(每台机器)

按照他说的改,首先设置为小于10

每台机器执行(临时的)

sudo sysctl vm.swappiness=10

然后永久修改(每台机器)

echo 'vm.swappiness=10'>> /etc/sysctl.conf

第二个问题(每台机器)

按照他说的命令复制

echo never > /sys/kernel/mm/transparent_hugepage/defrag

echo never > /sys/kernel/mm/transparent_hugepage/enabled

重新运行检测

Parcel集群组件服务选择

先给大家看看,我的内存负荷

 好,我们继续按照

我选择了spark,hive,zookeeper,hue(数据工程),当然后面你也可以自己加

 我选择了datanode(所有节点,但是很丑,默认是3个节点,但是cdh你给3台主机,他只给你2个节点,真正的cdh是4台)

 主服务器负荷太多,因为,没有内存,做真cdh4台了

点继续

数据库设置

hive元数据配置、hue、ooize

这里选择使用jdbc

填写账号密码,连接地

这个地方,以及其他的地方,写服务器中hosts的主机名称,如果写ip,他就会以本地去连接,写hosts他就会去服务器直接连接

jdbc:mysql://主机名称:3306/metastore?useSSL=false&useUnicode=true&&characterEncoding=utf-8

库要对应

注意,hive的库是metastore

红色的地方是容易写错的点

点击测试连接

 hdfs配置,选择默认

 

 目录记录

 这个地方最好保留下来,方便你下次找不到,文件看日志的时候,可以看这个

(邮件告警我没有做,正常应该写一个脚本告警,然后脚本给某人发邮件),我下次写一个py脚本,然后放上去,给某人发邮件。以前写爬虫的时候做过。

datanode 目录 /dfs/dn

namenode 数据目录 /dfs/nn

hdfs检查点目录 /dfs/snn

hive仓库位置 /user/hive/warehouse

hive元数据端口 9083

hostMonitor目录 /var/lib/cloudera-host-monitor

serviceMonitor存储目录 /var/lib/cloudera-service-monitor

ooize 目录 /user/oozie

ooize 服务目录 /var/lib/oozie/data

nodeMnager(yarn) 目录 /yarn/nm

zk数据目录 /var/lib/zookeeper

zk事务目录 /var/lib/zookeeper

继续

等他安装

此时,如果你内存太小,会安装失败,此时,你将再次听到,散热器的声音

 

完成

进行排错

 有的时候有很多红色,需要解决。

这次,我没有做宕机实验,上次直接关闭了虚拟机,模仿宕机,所以再次出现就有了很多红色,只有一些黄色需要解决,我挂起一下虚拟机,下次从这里进行排错

挂起虚拟机后,需要时间同步

# 安装NTP
yum -y install ntp

# 添加NTP远程时间同步服务器,通常安装后会自动配置,没有的话在自行添加
# vim /etc/ntp.conf

# 启动NTP
sudo systemctl start ntpd
# 设置NTP服务开机自动重启
sudo systemctl enable ntpd
# 同步节点的时间
# 命令格式(ntp_server为/etc/ntp.conf 配置文件中的NTP服务器地址):ntpdate -u <ntp_server>
ntpdate -u 0.centos.pool.ntp.org
# 同步系统时钟
hwclock --systohc

zk问题

 zk至少要3台,我只给了1台,所以报这个警告,添加多个zk就好

 解决

节点问题

 他说分配有问题,这个直接点, Memory Overcommit Validation Threshold 

设置成0.9就行

hdfs问题

点进去是这样 

 这个没有办法,CDH6对hdfs备份采取了更加强大的模式,有好几种,但是对节点要求最小的模式,也至少要5台,所以这个警告,我们无视,CDH5没有这种功能,所以不会警告

另一个警告

他说namenode至少要1G,所以我们改成1024 兆字节就好

cloudera Service 

点进去改就行

内存够,就没有问题,但是内存不够,所以这些报警就忽略。

其中4个报警,3个是因为内存达到阈值,超过百分之90的配置就会警告(默认是百分之80)

还有1个是,hdfs的节点要求,至少5台,才能用这个默认模式的高效存储。

至此,结束 

问题汇总

httpd问题

httpd访问界面Testing123

这是apache 的默认界面,能访问代表你配置成功,但是他的页面覆盖了你的文件系统,需要不让他访问默认界面,再进行重启

httpd访问testing123,直接备份一份最好,不需要注释内容
mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.bak

再重启httpd
sudo systemctl restart httpd
 

重启http

systemctl restart httpd

成功


cdh安装问题

执行 sudo yum -y install cloudera-manager-daemons cloudera-manager-server
出现拒绝连接

 httpd的默认接口不要修改,yum,读取本地默认为80端口。

有2个解决方法:

1)修改httpd为80,这我肯定是不会去修改的,为什么我也说过

2) 修改cdh的yum.repo,让他指向你指定的端口

我采用的第二种方法

vi /etc/yum.repos.d/cloudera-repo.repo

加上端口号

 重新执行

sudo yum -y install cloudera-manager-daemons cloudera-manager-server

安装成功


没有可用软件包 cloudera-manager-daemons。
没有可用软件包 cloudera-manager-agent。
错误:无须任何处理

 原因是因为,你的yum里面没有配置,我是从节点,没有把主节点的clouder.repo复制过来,所以在从节点执行yum,他在自己的yum仓库中没有找到,所以会出现这个错误。

 解决方式,将你配置了cloudera.repo的yum文件复制到,其他节点的yum仓库中

sh /ssync /etc/yum.repos.d/cloudera-repo.repo

再次执行,安装agent命令

sudo yum -y install cloudera-manager-daemons cloudera-manager-agent

正常安装

cdh scm_prepare_database.sh脚本执行后没有反应,mysql的scm库中没有相关表

 sudo /opt/cloudera/cm/schema/scm_prepare_database.sh

满足这几个就没有问题

首先mysql要能被连接,

关闭防火墙,

设置让任何用户ip都能通过密码访问,记得要刷新

本机与mysql节点时间要相同,

cdh要能读到mysql连接的jar包

最后显示脚本成功后,一定要重新启动cm-server,他是启动时,将sh中命令,执行表到数据库中。

cdh执行/opt/cloudera/cm/schema/scm_prepare_database.sh出现错误

DbCommandExecutor              ERROR Error when connecting to database.
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Cannot load connection 

 原因是,我没有建立scm库

sql执行

CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

之后在执行还是错误,因为我连接的是-h 192.168.30.101

我忘记了我是外部数据库,外部数据库的节点是192.168.30.2(自己设置的vm8的网络适配器的ip,这样就算我换wifi,服务端照样可以访问)

改为-h 192.168.30.2

cdh界面,勾选集群,当前受管

进入集群->点击cloudera Manager删除机器

 删除

勾选后,点击已选择的操作(千万不要点成了,从群集中删除,因为你没有集群,你要从cloudera中删除)

Remove From cloudera Manager 

然后点击添加集群,就好了

 Cdh中Parcel存储库界面,遭遇页面不能点击继续

1)由于修改了存储库的parcel(更多选项),他没有反应过来 ,点击返回上一级,在返回上一级,然后重新继续,就能加载出来了

2)是检查,httpd上的,后缀为sha的文件,必须把.sha1改成sha。

cd /var/www/html/cloudera-repos/cdh6

mv CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1 CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha

3)是检查 /opt/cloudera/parcel-repo 是否.sha1没有改成sha

cd /opt/cloudera/parcel-repo

mv CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1 CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha

最后重启cm-server,cm-agent

/var/www/html/xxxx中的sha1改为sha

 /opt/cloudera/parcel-repo中的sha1修改为sha

 弄完重启

节点

service cloudera-scm-server restart

service cloudera-scm-agent restart

再次进入,出现了


安装cm-agent出现
GPG key retrieval failed: [Errno 14] curl#37 - "Couldn't open file /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql"



原因是因为这台机器里以前装了mysql,但是mysql.repo文件里面开启了校验:所以gpgcheck=0关闭校验
详情:解决GPG key retrieval failed: [Errno 14] curl#37 问题_Kun_Zhou_的博客-CSDN博客

 遇到install时,一个节点卡死,很慢,一直等着激活

已分配是0 

查看top,以为是内存问题,结果发现并不是,于是查看agent状态

service cloudera-scm-agent status 

发现和其他成功节点不一样,他有错误

/opt/cloudera/cm-agent/lib/python2.7/site-packages/psutil/_pslinux.py:477: RuntimeWarning: dirty, writeback, mapped, commit_limit memor...ere set to 0
运行警告,内存不能设置为0

查看日志

  File "/opt/cloudera/cm-agent/lib/python2.7/site-packages/flood/util/rpc.py", line 33, in resolveHostPort
    return HostPort(socket.gethostbyname(w[0]), port)
gaierror: [Errno -2] Name or service not known
看到name我就想到了host

修改/etc/hosts(我之前把他注释掉了)

终于从0B开始走了

 成功

云服务器搭建问题篇

云服务器,他有2个ip,内网和外网ip。

cdh界面的日志,看了找不到问题,主要看,服务器的日志

进去看日志

cd /var/log/cloudera-scm-server

1.etc/hosts中,必须全部配置内网ip,其他ip不要配置

2.安装时候,使用云服务器安装时,注意不要开vpn,除非这个vpn是云服务器的

3.如果多次安装了agent,失败了,需要删除guid

find / -name "cm_guid"

cd /var/lib/cloudera-scm-agent

rm -rf cm_guid

重启agent,重启server

service cloudera-scm-agent restart

service cloudera-scm-server restart


Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐