1、检查相关依赖
yum -y install ntp python-lxml httpd mod_ssl cyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-gssapi
yum install psmisc -y
确认系统时区
2、启动各种相关服务并加到开机启动服务中
ntpd服务
service ntpd start
service ntpd stop
chkconfig ntpd on
httpd服务
service httpd start
chkconfig httpd on
启动httpd报警,解决报警【Starting httpd: httpd: Could not reliably determine the server’s fully qualified domain name, using 192.168.206.131 for ServerName】
vim /etc/httpd/conf/httpd.conf
#注释 ServerName www.example.com:80
#添加 ServerName localhost:80
service httpd restart
3、配置ip映射
vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.206.131 cdh01
4、在mysql中添加以下库,并授予远程登录权限
创建这些库的原因是是:cm管理的cdh版hadoop,各个组件是由【各自组件名为用户名】的【用户】管理的。没有这些库,在安装chd的时候无法通过数据库的验证。
eg.
hive,是由hive这个用户管理的,hive相关元数据会写到mysql中对于的hive库中
hue,是由hue这个用户管理的,hue相关的元数据会写到mysql对应的hue库中。
sql语句:
create database hive default character set utf8;
create user 'hive'@'%' identified by '1234';
grant all privileges on hive.* to hive@'%' identified by '1234';
flush privileges;
create database hue default character set utf8;
create user 'hue'@'%' identified by '1234';
grant all privileges on hue.* to 'hue'@'%'identified by '1234';
flush privileges;
create database oozie default character set utf8;
create user 'oozie'@'%' identified by '1234';
grant all privileges on oozie.* to 'oozie'@'%'identified by '1234';
flush privileges;
create database sentry default character set utf8;
create user 'sentry'@'%' identified by '1234';
grant all privileges on sentry.* to 'sentry'@'%'identified by '1234';
flush privileges;
create database nav_as default character set utf8;
create user 'nav_as'@'%' identified by '1234';
grant all privileges on nav_as.* to 'nav_as'@'%'identified by '1234';
flush privileges;
create database nav_ms default character set utf8;
create user 'nav_ms'@'%' identified by '1234';
grant all privileges on nav_ms.* to 'nav_ms'@'%'identified by '1234';
flush privileges;
create database cmf default character set utf8;
create user 'cmf'@'%' identified by '1234';
grant all privileges on cmf.* to 'cmf'@'%'identified by '1234';
flush privileges;
create database am default character set utf8;
create user 'am'@'%' identified by '1234';
grant all privileges on am.* to 'am'@'%'identified by '1234';
flush privileges;
5、正式开始安装cm(使用root用户安装)
将在cdh安装文件和cm安装tar包传到虚拟机的系统中
6、创建cm目录
mkdir -p /opt/cloudera-manager
7、解压cm的tar包
cd /opt/cloudera-manager
tar -zxvf /usr/local/cdh/cloudera-manager-centos7-cm5.16.2_x86_64.tar.gz -C ./
#在/opt/cloudera-manager生成两个文件夹:
8、修改配置文件中主节点hostname
vim /opt/cloudera-manager/cm-5.16.2/etc/cloudera-scm-agent/config.ini
#将server_host=localhost修改为server_host=cdh01
修改完毕后将cloudera-manager分发给其他节点
[root@cdh01 opt]# scp -r /opt/cloudera-manager/ cdh02:/opt/
[root@cdh01 opt]# scp -r /opt/cloudera-manager/ cdh03:/opt/
9、在节点上添加账号:cloudera-scm (所有节点)
useradd --system --home=/opt/cloudera-manager/cm-5.16.2/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
--system 创建一个系统账户
--home 指定用户登入时的主目录,替换系统默认值/home/
--no-create-home 不要创建用户的主目录
--shell 用户的登录 shell 名
--comment 用户的描述信息
注:Cloudera Manager默认用户为cloudera-scm,创建具有此名称的用户是最简单的方法。 安装完成后,将自动使用此用户。
10、创建cdh实体文件存放目录并修改属主为cloudera-scm
mkdir -p /opt/cloudera/parcels (所有节点)
chown cloudera-scm:cloudera-scm /opt/cloudera/parcels
#ps.这个目录就是安装好后的cdh实体文件的目录
11、创建cdh安装包文件路径,并将安装包复制到这个文件下
#创建目录
mkdir -p /opt/cloudera/parcel-repo (所有节点)
#移动安装包到该目录下 (主节点移动后把东西分发给其他节点)
mv /usr/local/cdh/* /opt/cloudera/parcel-repo
scp /opt/cloudera/parcel-repo/* cdh02:/opt/cloudera/parcel-repo/
scp /opt/cloudera/parcel-repo/* cdh03:/opt/cloudera/parcel-repo/
#更改该目录及文件的属主
chown -R cloudera-scm:cloudera-scm /opt/cloudera/parcel-repo (所有节点)
#ps.这个目录是安装包的目录,即cm在安装cdh版hadoop时,会从这个目录读取安装文件进行解压安装,后续会再提到这个目录
12、创建lib文件目录和log文件目录(很多,这些目录要么在安装时候用到,要么在运行时用到,是根据多次报错信息收集起来的) (所有节点)
mkdir -p /var/lib/cloudera-service-monitor
mkdir -p /var/lib/cloudera-host-monitor
mkdir -p /var/lib/cloudera-scm-eventserver
mkdir -p /var/lib/cloudera-scm-navigator
mkdir -p /var/lib/cloudera-scm-headlamp
mkdir -p /var/lib/cloudera-scm-firehose
mkdir -p /var/lib/cloudera-scm-alertpublisher
mkdir -p /var/log/cloudera-service-monitor
mkdir -p /var/log/cloudera-host-monitor
mkdir -p /var/log/cloudera-scm-eventserver
mkdir -p /var/log/cloudera-scm-navigator
mkdir -p /var/log/cloudera-scm-headlamp
mkdir -p /var/log/cloudera-scm-firehose
mkdir -p /var/log/cloudera-scm-alertpublisher
mkdir -p /var/lib/cloudera-scm-server
chown -R cloudera-scm:cloudera-scm /var/lib/cloudera-scm-server
chown -R cloudera-scm:cloudera-scm /var/lib/cloudera-service-monitor
chown -R cloudera-scm:cloudera-scm /var/lib/cloudera-host-monitor
chown -R cloudera-scm:cloudera-scm /var/lib/cloudera-scm-eventserver
chown -R cloudera-scm:cloudera-scm /var/lib/cloudera-scm-navigator
chown -R cloudera-scm:cloudera-scm /var/lib/cloudera-scm-headlamp
chown -R cloudera-scm:cloudera-scm /var/lib/cloudera-scm-firehose
chown -R cloudera-scm:cloudera-scm /var/lib/cloudera-scm-alertpublisher
chown -R cloudera-scm:cloudera-scm /var/log/cloudera-service-monitor
chown -R cloudera-scm:cloudera-scm /var/log/cloudera-host-monitor
chown -R cloudera-scm:cloudera-scm /var/log/cloudera-scm-eventserver
chown -R cloudera-scm:cloudera-scm /var/log/cloudera-scm-navigator
chown -R cloudera-scm:cloudera-scm /var/log/cloudera-scm-headlamp
chown -R cloudera-scm:cloudera-scm /var/log/cloudera-scm-firehose
chown -R cloudera-scm:cloudera-scm /var/log/cloudera-scm-alertpublisher
13、配置mysql数据库驱动包
版本号删了
mkdir /usr/share/java
mv /usr/local/mysql-connector-java-5.1.37.jar /usr/share/java/mysql-connector-java.jar
注意
安装jdk的方法:把jdk软连接到/usr/java/default首先查看是否有/usr/java目录,没有的话新建此目录:mkdir /usr/java。然后添加软连接到/usr/java/default,命令如下:ln -s /usr/local/jdk1.8.0_91 /usr/java/default
14、初始化数据库用户
/opt/cloudera-manager/cm-5.16.2/share/cmf/schema/scm_prepare_database.sh mysql -hcdh01 --scm-host cdh01 cmf cmf 1234
以下信息则表示初始化成功(注意-h后面跟的是节点的hostname 3个cmf是mysql里面的库,用户,密码,前面已经创建了)
15、启动server
#启动cm server
/opt/cloudera-manager/cm-5.16.2/etc/init.d/cloudera-scm-server start
#查看启动服务日志
tail -f /opt/cloudera-manager/cm-5.16.2/log/cloudera-scm-server/cloudera-scm-server.log
看到日志里启动了7180端口,就可以确定server启动完成了,可以启动agent
失败了 再来一次
16、启动agent(所有节点)
#启动cm agent
/opt/cloudera-manager/cm-5.16.2/etc/init.d/cloudera-scm-agent start
#查看启动agent日志
tail -f tail -f /opt/cloudera-manager/cm-5.16.2/log/cloudera-scm-agent/cloudera-scm-agent.log
#查看状态
/opt/cloudera-manager/cm-5.16.2/etc/init.d/cloudera-scm-agent status
17、通过web端访问cm安装cdh
默认的用户名:admin 密码:admin
地址:192.168.206.131:7180
18、安装版本选择免费
19、感谢! 继续下一步
20、选择安装节点(正式开始干活…),可以看到两个页签
第一个页签是搜索节点 — 【新主机】
第二个页签是已经检测到的节点 — 【当前管理的主机】
这个检测到的节点就是检测到我们起anget的节点,所以直接选择【当前管理的主机】就可以看到我们的cdh01,cdh02,cdh03 勾上,点继续
del: 单节点就是这样,如果多节点,这里根据需要选择安装的节点就好了
21、到了这里就可以看到下载并放到安装包目录的cdh版本了,CDH5.16.2版本
22、解释一下前面创建的文件夹
上一步的截图中看到【更多选项】的页签,打开它就可以看到我们之前为什么要按照那些路径创建目录了,如下:
我们不用去改,保持默认就好,
在前面的【】创建了/opt/cloudera/parcels这个目录
这个目录是用来存储cdh解压完运行时用到的文件目录
在前面的【】创建了/opt/cloudera/parcel-repo这个目录
这个目录是用来存储cdh安装包的路径
23、这里接着上两步点继续后的页面,这一步就算是开始分发文件并开始解压了
* 可以看到,直接显示下载100%,是因为我们是提前下载好离线安装的,
* 分配的意思就是将安装文件分发到安装的节点上,这次只有一个节点
* 解压和激活都是各个节点自己接收到安装文件后干的事啦,
* 这里稍等一会就可以继续了,如下
24、做安装前的最后检查吧
或者修改一下警告(我都改了)
关闭透明大页面(所有主机)
暂时关闭,命令行输入:
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
修改/etc/rc.local文件并添加以下两行,
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
设置swappiness(所有主机)
临时修改swappiness(重启后恢复)
sysctl -w vm.swappiness=10
永久生效(重启后不恢复)
echo "vm.swappiness=10" >> /etc/sysctl.conf
修改完毕后点击"重新运行"
完美!
25、到这步就是选择安装的组件了,可以先随便选,因为安装完后可以添加删除组件的
26、资源配置
这个页面是节点资源方面的配置,多个节点的话需要考虑节点资源平衡,哪些组件装那个节点,哪些组件最好装在同一个节点性能好都是需要考虑的,这一步也不是装了就不能改的,也可以通过添加删除组件来修改吧,但是cm删除服务是不会删除linux对于文件系统的文件的,所以能一次对就尽量一次对,免得linux越来越乱。重点:我是单节点,没得考虑…都装在一个节点上
注:给Cloudera Management Service选个节点
27、连接测试
这一步就是测试连接各个组件用户连通mysql
这些数据库,用户,我们在前面已经创建好了的
这里如果hue的连接出错,并且确认数据库用户密码没问题的话,就重新检查下前面的依赖:
执行:
yum -y install ntp python-lxml httpd mod_ssl cyrus-sasl-plain cyrus-sasl-devel cyrus-sasl-gssapi
28、详细配置
这一步中都是集群中的很详细的配置了,如果明确知道怎么配置,或者哪些文件想放哪里就可以在这里配,如果第一次安装,还是直接点继续保持默认的路径吧,等玩会了在配置这些。
29、最后的战斗
到了这步,嗯,开始了…然后祈祷不要报错就好了,不然,前面一大堆得再来一遍..很酸爽,
总的来说,有问题大部分是权限的问题,就是前面创建各种日志目录的那一步。
然而,我很不幸!!!
查看/opt/cloudera-manager/cm-5.16.2/run/cloudera-scm-agent/process/ccdeploy_spark-conf_etcsparkconf.cloudera.spark_on_yarn_-1661598769368635245/logs/stderr.log
发现
解决办法:
明确了是jdk没有装好,为什么没装好,因为我的是使用tar.gz的jdk包安装的,没有往/usr/java中添加软链接,而这里默认是去/usr/java/default中找环境变量,才会报找不到java_home。
安装jdk的方法:把jdk软连接到/usr/java/default首先查看是否有/usr/java目录,没有的话新建此目录:mkdir /usr/java。然后添加软连接到/usr/java/default,命令如下:ln -s /usr/local/jdk1.8.0_91 /usr/java/default
为什么要添加软连接到/usr/java/default?这是因为有些软件,不会去找环境变量的java,而是找/usr/java下的,比如说cloudera manager在部署最后的spark时,一直报“上的客户端配置 (id=3) 已使用 1 退出,而预期值为 0”这个错误,其中一个原因就是访问java访问不到,参考:cloudera manager报错“客户端配置 (id=3) 已使用 1 退出,而预期值为 0”
解决完毕后 点击“Resume” 重来一次
30、完事