ubantu18.04搭建cdh6.3 (按照我的版本,百分之百搭建出来)
我以前用centos7搭建过十几遍cdh(生产,测试,客户,云上,poc,教学,虚拟机)今天试试ubantu搭建。cdh配置繁琐,但是组件安装超级方便,只需要配置一次,可使用绝大部分大数据组件,并且自带监控功能,组件配置都是一键自动依赖启动,在管理界面,配置所有组件,这就是他的方便。
我以前用centos7搭建过十几遍cdh(生产,测试,客户,云上,poc,教学,虚拟机)
今天试试ubantu搭建。
cdh配置繁琐,但是组件安装超级方便,只需要配置一次,可使用绝大部分大数据组件,并且自带监控功能,组件配置都是一键自动依赖启动,在管理界面,配置所有组件,这就是他的方便。
测试后,按照文档搭建出来的时间大概是3小时左右。
经过了3年,来了新公司,发现他们是用Ubuntu-cdh,所以笔者身为架构师,用5台测试机,重新搭建了一次,并且整理为笔记,供程序员们少走坑。
先来一张成功的截图。
负载图片,我是标准的5台机器,所以说建议你的内存是32G以上。如果你的内存过于小,那么你就后面配置的时候,选个hdfs和zookeeper就可以了。
16G以下内存的,可以不用看了
这里虚拟机搭建,请看我另一篇
ubuntu去下载一个18.0.4然后网络配置什么的注意一点就可以了。安装都是无脑安装,记得设置个密码。
虚拟机VMWARE的ubuntu18.04网络配置-CSDN博客
资源准备
运维给了我5台机器。账户名叫liusheng2密码你猜
xx.9.41 HZSDLTCDH01V
xx.9.42 HZSDLTCDH02V
xx.9.43 HZSDLTCDH03V
xx.9.44 HZSDLTCDH04V
xx.9.45 HZSDLTCDH05V
1.cm6.3.2(ubantu18.04)
ubuntu的cdh必须是bionic格式的
CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel
常见问题解决
使用xshell输入tab不能自动补全,乱码或缩进
现象:进去后发现是$,输入tab会出现乱码或者缩进
-
乱码解决
右键xshell的机器,选择属性,选择终端的键盘,改成下面的2种方式
-
自动补全
sudo vi /etc/passwd
将你的登录用户默认的/bin/sh改成/bin/bash
然后点击xshell重新打开会话seesion,发现是bash的命令行啦
免密登录
每台机器都是如下操作,总操作数5+5^2次方
ssh-keygen -t rsa
然后copy到其他节点上,所有的节点都要copy一份
ssh-copy-id xx.9.41
ssh-copy-id xx.9.42
ssh-copy-id xx.9.43
ssh-copy-id xx.9.44
ssh-copy-id xx.9.45
为什么要免密登录?1.在传输的时候不需要输入密码,方便集群的搭建。2.他们之间的心跳感知是通过ssh的,如果不能免密登录,部署的时候,就会隔几秒要求你输入一次密码。
关闭防火墙
每台机器都要进行操作
sudo systemctl stop ufw
sudo systemctl disable ufw
sudo systemctl status ufw
避免出现端口,不能访问的问题
上传资源
将资源上传到其中一台机器上。我的是xx.9.41
在xx.9.41机器上执行命令,分到其他机器。
scp -r resource/ liusheng2@xx.9.42:~
scp -r resource/ liusheng2@xx.9.43:~
scp -r resource/ liusheng2@xx.9.44:~
scp -r resource/ liusheng2@xx.9.45:~
上传到一台机器上后,使用scp分发到其他机器上比较快,因为是内网传输
配置apt源
所有机器执行如下操作(推荐配置一台然后scp分发):
编写源
sudo vi /etc/apt/sources.list
删除掉里面的内容,加入下面内容
deb https://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
sudo apt update
需要能够访问阿里镜像源,或者这里改成他们本地的源。如果特殊情况没有源,需要离线下载,得准备一台机器部署离线源服务。【源】ubuntu搭建离线本地源_ubuntu 离线源-CSDN博客
JDK安装
每台机器都要执行如下操作:
安装rpm
sudo apt install rpm
去刚上传好的资源目录下
cd ~/resource
sudo rpm -ivh oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm
配置环境变量
sudo vi /etc/profile
在最后面加上
export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera/
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
更新
source /etc/profile
java -version
修改hosts
每台机器,运行
sudo vi /etc/hosts
加入下面的这行
xx.9.41 HZSDLTCDH01V
xx.9.42 HZSDLTCDH02V
xx.9.43 HZSDLTCDH03V
xx.9.44 HZSDLTCDH04V
xx.9.45 HZSDLTCDH05V
注释掉#127.0.1.1 开头的这一行,避免cm识别的时候出问题
设置时区
5台机器
sudo timedatectl set-timezone Asia/Shanghai
配置NTP
安装ntp(主节点)
sudo apt update
sudo apt install ntp
选择一台机器(HZSDLTCDH03V),作为时钟同步的主节点
sudo vi /etc/ntp.conf
restrict HZSDLTCDH03V mask 255.255.255.0 nomodify
server 127.127.1.0
fudge 127.127.1.0 stratum 10
service ntp restart
ntpq -p
其他节点安装ntp
sudo apt-get install ntp
sudo vi /etc/ntp.conf
最后一行加入
server HZSDLTCDH03V prefer
sudo service ntp restart
ntpq -p
防止误报,如果某台机器死机,再连上的话,时间没同步,那cdh监控会出现数据丢失或心跳超时等问题,所以要做Ntp。虚拟机测试的话,挂起会出现时间不一致。正式暂时没有发现这个问题。
ntp和ntpdate还有timedatectl都能同步时间,其中ntp是最灵敏的。
Mysql安装
注意版本:使用5.7
服务端
sudo apt install mysql-server
输入y
sudo systemctl start mysql
sudo systemctl status mysql
客户端
sudo apt-get install mysql-client
改密码
sudo cat /etc/mysql/debian.cnf
得到密码
mysql -udebian-sys-maint -p
粘贴密码,回车
update mysql.user set authentication_string=PASSWORD("123456") where User="root";
update mysql.user set plugin="mysql_native_password";
#设置任何host都能用这个用户
update mysql.user set host = '%' where user = 'root';
flush privileges;
#退出客户端
exit;
重新登录,查看是否修改成功。
设置外部访问
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
sudo systemctl restart mysql
用db工具连接,看是否能连接上
hive的元数据,一般是放在外部存储,所以需要mysql,同样ClouderManager的监控也需要依赖mysql。
Httpd安装
选择一台机器,在10.253.9.45机器上
sudo apt-get install apache2
sudo systemctl start apache2
sudo systemctl enable apache2
访问成功
他默认的目录是在/var/www/html下
cdh默认是从官方下载,但是官网下载不下来。所以就把parcel包等东西,放在httpd上,变成内网下载。
在httpd的默认路径,配置cm
cd /var/www
sudo chmod -R 777 html/
sudo mkdir -p /var/www/html/cloudera-repos/cm6
sudo tar zxvf ~/resource/cm6.3.1-ubuntu1804.tar.gz -C /var/www/html/cloudera-repos/cm6 --strip-components=1
移动allkeys.asc、manifest.json到cm
sudo cp ~/resource/manifest.json /var/www/html/cloudera-repos/cm6/
sudo cp ~/resource/allkeys.asc /var/www/html/cloudera-repos/cm6/
chmod加权限是因为,我等会儿用cdh搭的时候用的非root用户,避免出现访问权限问题。
--strip-components=1 我已经创建过目录了,就不再次创建
manifest.json是对应各个版本的组件定义(如hive、spark这些)
cdh目录配置
sudo mkdir -p /var/www/html/cloudera-repos/cdh6
移动allkeys.asc、manifest.json到cdh
sudo cp ~/resource/manifest.json /var/www/html/cloudera-repos/cdh6
sudo cp ~/resource/allkeys.asc /var/www/html/cloudera-repos/cdh6
移动parcel包
sudo cp ~/resource/CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel /var/www/html/cloudera-repos/cdh6
sudo cp ~/resource/CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel.sha1 /var/www/html/cloudera-repos/cdh6
sudo cp ~/resource/CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel.sha256 /var/www/html/cloudera-repos/cdh6
httpd去掉默认页面
cd /var/www/html
mv index.html bak_index.html
通过页面再次访问httpd
利用httpd配置本地cdh源
在xx.9.45机器上(部署httpd的机器)
cd /var/www/html/cloudera-repos/cdh6
sudo mv CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel.sha1 CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel.sha
sudo chmod -R ugo+rX /var/www/html/cloudera-repos/cdh6
sudo chmod -R ugo+rX /var/www/html/cloudera-repos/cm6
所有机器执行如下操作:
sudo vi /etc/apt/sources.list.d/cloudera-repo.list
内容如下:
#Cloudera Manager 6.3.1
deb [arch=amd64] http://xx.9.45/cloudera-repos/cm6/ bionic-cm6.3.1 contrib
导入GPG签名
wget http://xx.9.45/cloudera-repos/cm6/archive.key
sudo apt-key add archive.key
sudo apt-get update
CM安装
选择一台机器当cm-server节点(xx.9.43)
在xx.9.43上安装server、agent
sudo apt-get install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server
其他所有节点安装agent
sudo apt-get install cloudera-manager-daemons cloudera-manager-agent
mysql中建立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;
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
flush privileges;
导入mysql连接包(所有节点)
sudo cp ~/resource/mysql-connector-java-5.1.46.jar /usr/share/java/
sudo mv /usr/share/java/mysql-connector-java-5.1.46.jar /usr/share/java/mysql-connector-java.jar
初始化scm数据库中的数据
sudo /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm root -h xx.9.45
所有节点执行操作:
sudo mkdir -p /opt/cloudera/parcel-repo
sudo cp ~/resource/CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel /opt/cloudera/parcel-repo /opt/cloudera/parcel-repo/
sudo cp ~/resource/CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel.sha1 /opt/cloudera/parcel-repo
sudo cp ~/resource/CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel.sha256 /opt/cloudera/parcel-repo
sudo cp ~/resource/manifest.json /opt/cloudera/parcel-repo
sudo cp ~/resource/allkeys.asc /opt/cloudera/parcel-repo
sudo mv /opt/cloudera/parcel-repo/CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel.sha1 /opt/cloudera/parcel-repo/CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel.sha
启动服务
去主节点下启动server
sudo systemctl start cloudera-scm-server
sudo systemctl status cloudera-scm-server
sudo systemctl enable cloudera-scm-server
所有节点启动agent
sudo systemctl start cloudera-scm-agent
sudo systemctl status cloudera-scm-agent
sudo systemctl enable cloudera-scm-agent
sudo tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
cdh大数据平台配置
浏览器访问xx.9.43:7180
账号密码admin
选60天试用
搜索主机名
发现有一个受管了。
关闭受管
点主机,然后所有,然后选中它,点击操作,选从群集中选Cloudera Manager移除。再从主机中选Cloudera Manager移除。
少了张群集的,移除图
-
选择自定义存储库,改成自己对应的cm位置
在parcel选择更多选项
-
其他都都删了,把cdh6的httpd地址写进去
-
不安装jdk,因为我们已经安了
-
选择其他用户,下面输入对应的这个账号的密码
安装(和这个图差不多,之前没有主动解除受管,所以页面有差异,文档是先解除受管,我实际做的时候忘记了,做的是后解除受管,先后解除都一样)
安装没问题,进入下一个页面,点击inspect network和inspect hosts
-
发现有个小黄点
所有机器执行(临时的)
sudo sysctl vm.swappiness=10
然后永久修改(所有机器)
sudo -i
echo 'vm.swappiness=10'>> /etc/sysctl.conf
-
修复后点击重新运行
然后点继续
角色分配
hive元数据配置
选是,用jdbc链接
填写mysql数据库对应机器的hostname
jdbc:mysql://HZSDLTCDH05V:3306/metastore?useSSL=false&useUnicode=true&&characterEncoding=utf-8
-
主机填写数据库的主机,其他填写mysql的账号密码,数据库对应之前创建的数据库
-
点击下测试连接,没问题的话就继续
-
看下配置,没问题点击,继续
解决问题
主机 dns解析不一致
内网直接关掉,就行,也不需要DNS解析
纠删码
9 DataNodes are required for the erasure coding policies: RS-6-3-1024k. The number of DataNodes is only 4.
他说如果用这个算法检查,至少是9台datanode,这个算法太屌了,我们没有那么多机器。直接屏蔽,不需要这个。然后重启过时服务。
重启过时服务
负载情况
更多推荐
所有评论(0)