0%

Cloudera Manager CDH离线安装

本文主要包括:

  • CM离线安装

CM离线安装

安装准备

准备3台虚拟机
golden-01
golden-02
golden-03
并设置免秘钥登录,这里忽略

下载cdh6.2.0,在百度网盘下载:
https://pan.baidu.com/s/1QlWyMRSRJNcaStsZMSdmLg 提取码:ietj

关闭防火墙与关闭 SELINUX

  1. 关闭防火墙
    script
    systemctl stop firewalld ## 关闭防火墙 systemctl disable firewalld ###禁止防火墙开机自启
  2. 关闭SELINUX,只需要关闭一个需要配置http文件服务的虚拟机就可以
    vim /etc/selinux/config —> SELINUX=disabled (修改)
    这里改完了需要重启虚拟机
    这里如果不关闭SELINUX,下面视同httpd访问文件的时候,会报错:
    You don't have permission to access upload/ on this server

配置NTP服务(所有节点)

修改时区(改为中国标准时区)

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
## 安装ntp
yum -y install ntp 

ntp主机配置 vi /etc/ntp.conf
在文件里新增server ntp.aliyun.com,并把原始的server给注释掉
重启service ntpd restart

配置本地服务器(选定任意一台主机即可)

配置的本地文件服务器的目的是为了,让之后其他节点可以从这直接下载

script
yum install -y httpd ##安装httpd service httpd start 启用htttpd cd /var/www/html/ && mkdir cdh6 && mkdir cm6 ## 把下载的rpm放到文件服务cm6里 cp /home/golden/cdh6.2.0/cm6/* /var/www/html/cm6/ cp /home/golden/cdh6.2.0/oracle-j2sdk1.8-1.8.0+update181-1.x86_64.rpm /var/www/html/cm6/

这里注意,启用httpd服务以后,防火墙和selinux必须都关闭,否则,就会报如下错误:

script
You don't have permission to access upload/ on this server

生成yum源的描述的目录信息 可以让其他节点知道到这里下载

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

所有节点上添加yum源的配置文件

script
cat >> /etc/yum.repos.d/cm6.repo << EOF [cm6-local] name=cm6-local baseurl=http://192.168.233.133/cm6/ enabled=1 gpgcheck=0 EOF

查看yum配置源是否生效

script
yum clean all yum repolist yum makecache

JDK安装

前面安装了2次,都是使用自己配置JAVA_HOME的方式,都没问题,但是,最后一次使用了CentOS7精简版的,还是使用自己配置JAVA_HOME的方式,发现cloudera-manager-server启动不成功
通过journalctl -u cloudera-manager-server以及journalctl -xe来查看启动日志,发现,报找不到java。但是java安装没有问题
最后使用了yum安装了jdk问题解决了

yum install -y oracle-j2sdk1.8-1.8.0+update181-1.x86_64

clouder server 与agent安装

安装cm6相关依赖(所有节点)

script
yum -y install chkconfig python bind-utils psmisc libxslt zlib sqlite cyrus-sasl-plain cyrus-sasl-gssapi fuse fuse-libs redhat-lsb httpd mod_ssl

安装Cloudera Manager Server

这一步只需要在CM Server节点上操作。
执行下面的命令:

script
# 安装openjdk8 yum install oracle-j2sdk1.8 ##这里不知道需不需要安装,因为我本机已经安装了java了。这里先不安装,如果报错再重来 # 安装 cm manager(只需在server节点安装) yum install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server

配置本地Parcel存储库

Cloudera Manager Server安装完成后,进入到本地Parcel存储库目录:

script
cd /opt/cloudera/parcel-repo ## Cloudera Manager Server完成以后,该目录就已经生成了

将第一部分下载的CDH parcels文件上传至该目录下,然后执行修改sha文件:

script
mv /data6/upload/parcels/* /opt/cloudera/parcel-repo/ mv CDH-6.3.0-1.cdh6.3.0.p0.1279813-el7.parcel.sha1 CDH-6.3.0-1.cdh6.3.0.p0.1279813-el7.parcel.sha

配置mysql jdbc驱动

从前面下载好的mysql-connector-java-5.1.47.tar.gz包中解压出mysql-connector-java-5.1.47-bin.jar文件,将mysql-connector-java-5.1.47-bin.jar文件上传至CM Server节点上的/usr/share/java/目录下并重命名为mysql-connector-java.jar(如果/usr/share/java/目录不存在,需要手动创建):

script
cd /usr/share/java && mv /home/golden/mysql-connector-java-5.1.47.jar .

创建CDH所需要的数据库

根据所需要安装的服务参照下表创建对应的数据库以及数据库用户,数据库必须使用utf8编码,创建数据库时要记录好用户名及对应密码:

-- scm
CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON scm.* TO 'scm'@'%' IDENTIFIED BY 'scm';

-- amon
CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON amon.* TO 'amon'@'%' IDENTIFIED BY 'amon';

-- rman
CREATE DATABASE rman DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON rman.* TO 'rman'@'%' IDENTIFIED BY 'rman';

-- hue
CREATE DATABASE hue DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; 
GRANT ALL ON hue.* TO 'hue'@'%' IDENTIFIED BY 'hue';

-- hive
CREATE DATABASE metastore DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON metastore.* TO 'hive'@'%' IDENTIFIED BY 'hive';

-- sentry
CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;   
GRANT ALL ON sentry.* TO 'sentry'@'%' IDENTIFIED BY 'sentry';

-- nav
CREATE DATABASE nav DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;      
GRANT ALL ON nav.* TO 'nav'@'%' IDENTIFIED BY 'nav';

-- navms
CREATE DATABASE navms DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON navms.* TO 'navms'@'%' IDENTIFIED BY 'navms';

-- oozie
CREATE DATABASE oozie DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON oozie.* TO 'oozie'@'%' IDENTIFIED BY 'oozie';

-- hive
CREATE DATABASE hive DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON hive.* TO 'hive'@'%' IDENTIFIED BY 'hive';
-- flush
FLUSH PRIVILEGES;

设置Cloudera Manager 数据库

Cloudera Manager Server包含一个配置数据库的脚本。

  • mysql数据库与CM Server是同一台主机
    执行命令:/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm
  • mysql数据库与CM Server不在同一台主机上
    执行命令:/opt/cloudera/cm/schema/scm_prepare_database.sh mysql -h <mysql-host-ip> --scm-host <cm-server-ip> scm scm
    执行如下命令:
    /opt/cloudera/cm/schema/scm_prepare_database.sh mysql -uroot -h golden-02 -p'Gjc123!@#' --scm-host golden-01 scm scm scm
    这里卡了很久,报了如下错误:
    ERROR Exception when creating/dropping database with user 'root' and jdbc url 'jdbc:mysql://golden-02/?useUnicode=true&characterEncoding=UTF-8'
    com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
    
    The last packet successfully received from the server was 202 milliseconds ago.  The last packet sent successfully to the server was 197 milliseconds ago.
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)[:1.8.0_321]
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)[:1.8.0_321]
    	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)[:1.8.0_321]
    	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)[:1.8.0_321]
    
    找了很久的问题,首先是安装的mysql不支持远程连接,需要做如下配置:
    grant all privileges on *.* to root@'%' identified by 'Gjc123!@#';
    flush privileges;
    配置了以后,还是报错,找了很久,最终找到原因,是因为下载的mysql-connector-java-5.1.47-bin.jar有问题,重新下载了一个,问题解决

安装CDH节点

启动Cloudera Manager Server服务

script
systemctl start cloudera-scm-server

然后等待Cloudera Manager Server启动,可能需要稍等一会儿,可以通过命令tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log去监控服务启动状态。
当看到INFO WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server.日志打印出来后,说明服务启动成功,可以通过浏览器访问Cloudera Manager WEB界面了。

访问Cloudera Manager WEB界面

  • 打开浏览器,访问地址:http://:7180,默认账号和密码都为admin:
  • 首先是Cloudera Manager的欢迎页面,点击页面右下角的【继续】按钮进行下一步
  • 勾选接受条款,点击【继续】进行下一步:
  • 版本选择,这里我就选择免费版了:
  • 选择版本以后会出现第二个欢迎界面,不过这个是安装集群的欢迎页:
  • 选择主机,这一步是要搜索并选择用于安装CDH集群的主机,在主机名称后面的输入框中输入各个节点的hostname,中间使用英文逗号分隔开,然后点击搜索,在结果列表中勾选要安装CDH的节点即可:
    CM离线安装_配置主机
  • 指定存储库Cloudera Manager Agent这里选择自定义,填写上面使用httpd搭建好的Cloudera Manager YUM 库URL:
  • CDH and other software 如果我们之前的【配置本地Parcel存储库】步骤操作无误的话,这里会自动选择【使用Parcel】,并加载出CDH版本,但是这里一直没有识别出来,还报了如下错误:
    CM离线安装_识别不到parcel-repo
    找到问题原因:是因为parcel文件的.sha1需要改成.sha,修改完以后,就能识别出来了
    这里一开始还跟着教程先用yum安装了cloudera-manager-agent,安装完了更报错,这里不要安装
    CM离线安装_正常识别到parcel-repo
  • JDK安装选项,这里jdk已经安装了,不要勾选
  • SSH登录配置,用于配置集群主机之间的SSH登录,填写root用户的密码,根据集群配置填写合适的【同时安装数量】值即可:
    CM离线安装_提供SSH登录凭据
  • 安装Agent
  • 安装Parcels
  • 主机检查,Inspect Network Performance Inspect Network Performance需要点击的,一开始以为是自动检查,一直等着
    然后标黄了几个选项:
    Cloudera 建议将 /proc/sys/vm/swappiness 设置为最大值 10。当前设置为 30。使用 sysctl 命令在运行时更改该设置并编辑 /etc/sysctl.conf,以在重启后保存该设置。您可以继续进行安装,但 Cloudera Manager 可能会报告您的主机由于交换而运行状况不良。
    已启用透明大页面压缩,可能会导致重大性能问题。请运行echo never > /sys/kernel/mm/transparent_hugepage/defrag和echo never > /sys/kernel/mm/transparent_hugepage/enabled以禁用此设置,然后将同一命令添加到 /etc/rc.local 等初始化脚本中,以便在系统重启时予以设置。
    安装上面的提示执行即可;
    但是有一点,报找不到java,这个有点不知道怎么解决了,这里先跳过了,点击I understand this risks

安装CDH集群

选择服务类型

这里我选择自定义服务,然后选择很多组件,hdfs、zk、yarn、hbase、kafka等等

角色分配

这里会有默认设置,然后把需要手动设置的手动设置一下,点击继续

数据库设置

这里根据要求设置即可
后面的步骤就没有什么问题了,可以参考下面的两篇文章。

这里参考了
CentOS7 Cloudera Manager6 完全离线安装 CDH6 集群
cdh6.2离线安装(傻瓜式安装教程)

CDH日志清理

随着CM运行的时间越来越长,它所产生的日志文件也越来越大,需要定期去清理这些日志文件
在网上找了一个博客,用了他的自动化脚本,然后CM的监控页面都出问题了,无语了
以下是脚本:

#!/bin/bash

# 清理日志
cd /var/log/hadoop-mapreduce
rm -rf *.out.* 
rm -rf *.log.*

cd /var/log/hadoop-hdfs
rm -rf *.out.* 
rm -rf *.log.*

cd /var/log/zookeeper
rm -rf *.out.* 
rm -rf *.log.*

cd /var/log/hive
rm -rf *.out.* 
rm -rf *.log.*

cd /var/log/cloudera-scm-agent
rm -rf *.out.* 
rm -rf *.log.*

cd /var/log/audit
rm -rf *.out.* 
rm -rf *.log.*

cd /var/log/hadoop-yarn
rm -rf *.out.* 
rm -rf *.log.*

cd /var/log/hue-httpd
rm -rf *.out.* 
rm -rf *.log.*

# 清理监控日志
cd /var/lib/cloudera-host-monitor/ts/type/partitions
rm -rf type*
cd /var/lib/cloudera-host-monitor/ts/stream/partitions
rm -rf stream*
cd /var/lib/cloudera-host-monitor/ts/ts_stream_rollup_PT600S/partitions/
rm -rf ts_stream*
cd /var/lib/cloudera-host-monitor/ts/ts_type_rollup_PT600S/partitions/
rm -rf ts_type*

cd /var/lib/cloudera-service-monitor/ts/stream/partitions/
rm -rf stream*
cd /var/lib/cloudera-service-monitor/ts/type/partitions/
rm -rf type*
cd /var/lib/cloudera-service-monitor/ts/ts_stream_rollup_PT600S/partitions/
rm -rf ts_stream*
cd /var/lib/cloudera-service-monitor/ts/ts_type_rollup_PT600S/partitions/
rm -rf ts_type*

执行完成之后,监控页面如下图:
CM监控页面故障

解决办法:

mv cloudera-host-monitor/ cloudera-host-monitor_BAK
mv  cloudera-service-monitor  cloudera-service-monitor_BAK

然后重启Cloudera Management Service,然后就不报错了,但是,都是无数据了,也好理解,都删除了嘛
CM监控页面无数据
等待了一会,页面现实正常:
CM监控页面恢复正常