CDH5 安装过程
一、环境
1.1 操作系统
$ cat /etc/redhat-release CentOS release 6.5 (Final)
1.2 Java环境
$ java -version java version "1.7.0_80" Java(TM) SE Runtime Environment (build 1.7.0_80-b15) Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
1.3 集群环境
10.171.95.1 master 10.171.95.2 slave
二、配置网络以及数据库
2.1 配置网络
2.1.1 /etc/hosts
配置如下:
10.171.95.1 master
10.171.95.2 slave
注意:此处的机器名称不能带有下划线,否则会导致后面cloudera-scm-agent启动不起来,这个问题我找了好久各种方法都不好使,最后在查看日志的时候发现是hostname中带有下划线导致的,郁闷!
更改机器名称:
$ vim /etc/sysconfig/network
HOSTNAME=your_host_name
2.1.2 ssh免密码登陆
这个很简单,此处略去。
2.2 配置mysql
2.2.1 安装mysql
略去。
2.2.2 设置用户权限
先执行:$ sh cm-5.3.8/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -P3306 -uroot -pmysql_root_password --scm-host localhost scm scm scm
此时会报错。为了解决错误,做如下操作:
先用root用户登陆mysql: $ mysql -uroot -pmysql_root_password
再做如下操作:
mysql> SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
+---------------------------------------+
| query |
+---------------------------------------+
| User: 'scm'@'localhost'; |
+---------------------------------------+
10 rows in set (0.06 sec)
mysql> show grants for 'scm'@'localhost';
+------------------------------------------------------------------------------------------------------------+
| Grants for scm@localhost |
+------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'scm'@'localhost' IDENTIFIED BY PASSWORD '*45E6E3C68BDF1AC7EBB5C5A3BCBD5E9437B293BE' |
| GRANT ALL PRIVILEGES ON `cm`.* TO 'scm'@'localhost' |
+------------------------------------------------------------------------------------------------------------+
2 rows in set (0.02 sec)
可以看到,上面的权限仅仅允许localhost访问,此时再增加一个权限,使得对所有的ip都能够访问:
赋权是需要指定用户名和密码,默认的用户名和密码保存在/opt/cm-5.3.8/etc/cloudera-scm-server/db.properties下面。
$ cat /opt/cm-5.3.8/etc/cloudera-scm-server/db.properties
com.cloudera.cmf.db.type=mysql
com.cloudera.cmf.db.host=localhost:3306
com.cloudera.cmf.db.name=cm
com.cloudera.cmf.db.user=scm
com.cloudera.cmf.db.password=scm
可以看到数据库名称,用户名称和密码。
赋权时如果采用:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'scm'@'%' IDENTIFIED BY PASSWORD 'scm' WITH GRANT OPTION;
可能会报如下错误:
ERROR 1827 (HY000): The password hash doesn't have the expected format. Check if the correct password algorithm is being used with the PASSWORD() function.
令我郁闷的是第一次这样做的时候没有报错,后来就不行了,不知为什么。
解决方法如下:
mysql> select password('scm'); +-------------------------------------------+ | password('scm') | +-------------------------------------------+ | *45E6E3C68BDF1AC7EBB5C5A3BCBD5E9437B293BE | +-------------------------------------------+
将明文密码'scm'改为加密后的密码'*45E6E3C68BDF1AC7EBB5C5A3BCBD5E9437B293BE'
mysql> GRANT ALL PRIVILEGES ON *.* TO 'scm'@'%' IDENTIFIED BY PASSWORD '*45E6E3C68BDF1AC7EBB5C5A3BCBD5E9437B293BE' WITH GRANT OPTION;
mysql> flush privileges;
这样即可生效,该方法来自于:http://www.icchasethi.com/adding-a-new-mysql-user-with-root-privileges/
如果操作错误,可如下清空数据,再重新操作。
mysql> delete from mysql.user where user='scm';
mysql> flush privileges;
mysql> drop database cm;
好了,此时再执行该脚本,应该就顺利通过了。
$ sh cm-5.3.8/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -P3306 -uroot -p123 --scm-host localhost scm scm scm
三、启动server以及agent
3.1 在server端启动:
$ ./cm-5.3.8/etc/init.d/cloudera-scm-server start
$ ./cm-5.3.8/etc/init.d/cloudera-scm-agent start
3.2 在slave端只启动agent:
$ ./cm-5.3.8/etc/init.d/cloudera-scm-agent start
此时可以在浏览器中输入master对应的外网地址以及端口(7180):http://master_outer_ip:7180,如果正常的话就可以打开登陆页面,如果打不开,可以检查防火墙是否关闭。
$ service iptables status
$ service iptables stop
去吧,去吧,到彼岸去吧,彼岸是光明的世界!