• ubantu搭建cdh6(自己留的草稿版本)


    我以前用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.2ubantu18.04)

    ubuntu的cdh必须是bionic格式的

    CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel

    常见问题解决

    使用xshell输入tab不能自动补全,乱码或缩进

    现象:进去后发现是$,输入tab会出现乱码或者缩进

    1. 乱码解决

    右键xshell的机器,选择属性,选择终端的键盘,改成下面的2种方式

    1. 自动补全

    sudo vi /etc/passwd

    将你的登录用户默认的/bin/sh改成/bin/bash

    然后点击xshell重新打开会话seesion,发现是bash的命令行啦

    免密登录

    每台机器都是如下操作,总操作数5+5^2次方

    ssh-keygen -t rsa

    然后copy到其他节点上,所有的节点都要copy一份

    1. ssh-copy-id xx.9.41
    2. ssh-copy-id xx.9.42
    3. ssh-copy-id xx.9.43
    4. ssh-copy-id xx.9.44
    5. ssh-copy-id xx.9.45

    为什么要免密登录?1.在传输的时候不需要输入密码,方便集群的搭建。2.他们之间的心跳感知是通过ssh的,如果不能免密登录,部署的时候,就会隔几秒要求你输入一次密码。

    关闭防火墙

    每台机器都要进行操作

    1. sudo systemctl stop ufw
    2. sudo systemctl disable ufw
    3. sudo systemctl status ufw

    避免出现端口,不能访问的问题

    上传资源

    将资源上传到其中一台机器上。我的是xx.9.41

    在xx.9.41机器上执行命令,分到其他机器。

    1. scp -r resource/ liusheng2@xx.9.42:~
    2. scp -r resource/ liusheng2@xx.9.43:~
    3. scp -r resource/ liusheng2@xx.9.44:~
    4. scp -r resource/ liusheng2@xx.9.45:~

    上传到一台机器上后,使用scp分发到其他机器上比较快,因为是内网传输

    配置apt源

    所有机器执行如下操作(推荐配置一台然后scp分发):

    编写源

    sudo vi /etc/apt/sources.list

    删除掉里面的内容,加入下面内容

    1. deb https://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
    2. deb-src https://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
    3. deb https://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
    4. deb-src https://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
    5. deb https://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
    6. deb-src https://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
    7. deb https://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
    8. 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

    去刚上传好的资源目录下

    1. cd ~/resource
    2. 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

    更新

    1. source /etc/profile
    2. 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(主节点)

    1. sudo apt update
    2. 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

    1. service ntp restart
    2. ntpq -p

    其他节点安装ntp

    1. sudo apt-get install ntp
    2. sudo vi /etc/ntp.conf

    最后一行加入

    server HZSDLTCDH03V prefer

    1. sudo service ntp restart
    2. ntpq -p

    防止误报,如果某台机器死机,再连上的话,时间没同步,那cdh监控会出现数据丢失或心跳超时等问题,所以要做Ntp。虚拟机测试的话,挂起会出现时间不一致。正式暂时没有发现这个问题。

    ntp和ntpdate还有timedatectl都能同步时间,其中ntp是最灵敏的。

    Mysql安装

    注意版本:使用5.7

    服务端

    1. sudo apt install mysql-server
    2. 输入y
    1. sudo systemctl start mysql
    2. sudo systemctl status mysql

    客户端

    sudo apt-get install mysql-client

    改密码

    sudo cat /etc/mysql/debian.cnf

    得到密码

    1. mysql -udebian-sys-maint -p
    2. 粘贴密码,回车
    1. update mysql.user set authentication_string=PASSWORD("123456") where User="root";
    2. update mysql.user set plugin="mysql_native_password";
    3. #设置任何host都能用这个用户
    4. update mysql.user set host = '%' where user = 'root';
    5. flush privileges;
    6. #退出客户端
    7. exit;

    重新登录,查看是否修改成功。

    设置外部访问

    sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

    sudo systemctl restart mysql

    用db工具连接,看是否能连接上

    hive的元数据,一般是放在外部存储,所以需要mysql,同样ClouderManager的监控也需要依赖mysql。

    Httpd安装

    选择一台机器,在10.253.9.45机器上

    1. sudo apt-get install apache2
    2. sudo systemctl start apache2
    3. sudo systemctl enable apache2

    访问成功

    他默认的目录是在/var/www/html下

    cdh默认是从官方下载,但是官网下载不下来。所以就把parcel包等东西,放在httpd上,变成内网下载。

    在httpd的默认路径,配置cm

    1. cd /var/www
    2. sudo chmod -R 777 html/
    3. sudo mkdir -p /var/www/html/cloudera-repos/cm6
    4. 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

    1. sudo cp ~/resource/manifest.json /var/www/html/cloudera-repos/cm6/
    2. 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

    1. sudo cp ~/resource/manifest.json /var/www/html/cloudera-repos/cdh6
    2. sudo cp ~/resource/allkeys.asc /var/www/html/cloudera-repos/cdh6

    移动parcel包

    1. sudo cp ~/resource/CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel /var/www/html/cloudera-repos/cdh6
    2. sudo cp ~/resource/CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel.sha1 /var/www/html/cloudera-repos/cdh6
    3. sudo cp ~/resource/CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel.sha256 /var/www/html/cloudera-repos/cdh6

    httpd去掉默认页面

    1. cd /var/www/html
    2. mv index.html bak_index.html

    通过页面再次访问httpd

    利用httpd配置本地cdh源

    在xx.9.45机器上(部署httpd的机器)

    1. cd /var/www/html/cloudera-repos/cdh6
    2. 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

    1. sudo chmod -R ugo+rX /var/www/html/cloudera-repos/cdh6
    2. 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签名

    1. wget http://xx.9.45/cloudera-repos/cm6/archive.key
    2. sudo apt-key add archive.key
    3. 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对应的组件库

    1. # 创建Cloudera组件所需的数据库
    2. CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
    3. CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
    4. CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
    5. CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
    6. CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
    7. CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
    8. CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
    9. CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
    10. CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
    11. grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
    12. flush privileges;

    导入mysql连接包(所有节点)

    1. sudo cp ~/resource/mysql-connector-java-5.1.46.jar /usr/share/java/
    2. 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

    所有节点执行操作:

    1. sudo mkdir -p /opt/cloudera/parcel-repo
    2. sudo cp ~/resource/CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel /opt/cloudera/parcel-repo /opt/cloudera/parcel-repo/
    3. sudo cp ~/resource/CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel.sha1 /opt/cloudera/parcel-repo
    4. sudo cp ~/resource/CDH-6.3.2-1.cdh6.3.2.p0.1605554-bionic.parcel.sha256 /opt/cloudera/parcel-repo
    5. sudo cp ~/resource/manifest.json /opt/cloudera/parcel-repo
    6. sudo cp ~/resource/allkeys.asc /opt/cloudera/parcel-repo
    7. 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

    1. sudo systemctl start cloudera-scm-server
    2. sudo systemctl status cloudera-scm-server
    3. sudo systemctl enable cloudera-scm-server

    所有节点启动agent

    1. sudo systemctl start cloudera-scm-agent
    2. sudo systemctl status cloudera-scm-agent
    3. 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移除

    少了张群集的,移除图

    1. 选择自定义存储库,改成自己对应的cm位置

    在parcel选择更多选项

    1. 其他都都删了,把cdh6的httpd地址写进去

    1. 不安装jdk,因为我们已经安了

    1. 选择其他用户,下面输入对应的这个账号的密码

    安装(和这个图差不多,之前没有主动解除受管,所以页面有差异,文档是先解除受管,我实际做的时候忘记了,做的是后解除受管,先后解除都一样)

    安装没问题,进入下一个页面,点击inspect network和inspect hosts

    1. 发现有个小黄点

    所有机器执行(临时的)

    sudo sysctl vm.swappiness=10

    然后永久修改(所有机器)

    1. sudo -i
    2. echo 'vm.swappiness=10'>> /etc/sysctl.conf
    1. 修复后点击重新运行

    然后点继续

    角色分配

    hive元数据配置

    选是,用jdbc链接

    填写mysql数据库对应机器的hostname

    jdbc:mysql://HZSDLTCDH05V:3306/metastore?useSSL=false&useUnicode=true&&characterEncoding=utf-8

    1. 主机填写数据库的主机,其他填写mysql的账号密码,数据库对应之前创建的数据库

    1. 点击下测试连接,没问题的话就继续

    1. 看下配置,没问题点击,继续

    解决问题

    主机 dns解析不一致

    内网直接关掉,就行,也不需要DNS解析

    纠删码

    9 DataNodes are required for the erasure coding policies: RS-6-3-1024k. The number of DataNodes is only 4.

    他说如果用这个算法检查,至少是9台datanode,这个算法太屌了,我们没有那么多机器。直接屏蔽,不需要这个。然后重启过时服务。

    重启过时服务

    负载情况

  • 相关阅读:
    rsync 远程同步
    如何把 SAP ABAP 系统里一张数据库表的内容,显示在 Adobe PDF Form 里
    JavaScript倒计时
    vue源码分析---数据代理、数据劫持
    NPDP为什么越来越受追捧?产品经理你可知道?
    【Swift 60秒】40 - Parameter labels
    元宇宙的宏观与微观趋势
    SAP ERP系统解决光伏电池产业管理难题
    641.设计双向循环队列
    多目标海洋捕食者算法(MOMPA)(Matlab代码)
  • 原文地址:https://blog.csdn.net/qq_38403590/article/details/127105235