文章目录
  1. 1. 环境准备
  2. 2. 环境配置
  3. 3. 配置集群
  4. 4. 配置cdh
  5. 5. 查漏补缺
    1. 5.1. 问题一:oozie 的 web UI 缺少extjs而无法访问的问题
    2. 5.2. 问题二:hive ddl 操作失败,无论是否通过HUE
    3. 5.3. 问题三:用户权限设置
    4. 5.4. 问题四:新增节点无法加入到 hdfs 和 yarn 里

如何利用 cloudera manager 安装 hadoop cdh 集群

cloudera manager 是一个可以批量管理hadoop 集群的工具,对于 hadoop cdh 包的安装,十分便捷。


环境准备

  • 多台 centos6 x64 机器
    • 10.200.8.43 hadoop1 8G 154G 8CPU
    • 10.200.8.44 hadoop2 16G 154G 8CPU
    • 10.200.8.45 hadoop3 16G 1.5T 16CPU
    • 10.200.8.46 hadoop4 16G 260G 16CPU
    • 10.200.8.47 hadoop5 16G 260G 16CPU
    • 10.200.8.48 hadoop6 16G 800G 8CPU
  • 其中一台部署 mysql 服务,我将 mysql装在 hadoop1 上
  • 选1台机器 hadoop1 执行 yum install cloudera-manager-server-db-2yum install mysql-connector-java 将近900M ,安装较慢

环境配置

1.修改每台机器的hostname,及 /etc/hosts

1
2
3
sed -i 's/^HOSTNAME=.*$/HOSTNAME=hadoop1/g' /etc/sysconfig/network
hostname hadoop1
service network restart
1
2
3
4
5
6
10.200.8.43 hadoop1
10.200.8.44 hadoop2
10.200.8.45 hadoop3
10.200.8.46 hadoop4
10.200.8.47 hadoop5
10.200.8.48 hadoop6

2.在安装mysql的机器hadoop1上,进入mysql,创建 cloudera manager (后面简称 cm )用户,由于cm用户会继续创建 hdfs oozie yarn 等用户,所以需要连带授权

1
grant all on *.* to 'cm'@'%' identified by 'cm' with grant option;

3.初始化元信息到 mysql,会创建 scm数据库 (命令用法可查看 /usr/share/cmf/schema/scm_prepare_database.sh -h

1
/usr/share/cmf/schema/scm_prepare_database.sh -h hadoop1 -u cm -pcm mysql --scm-host hadoop1 scm cm cm

4.检查创建后的mysql元信息配置文件

1
2
3
4
5
6
7
8
9
10
11
[root@hadoop1 yuanxiaolong]# cat /etc/cloudera-scm-server/db.properties
# Auto-generated by scm_prepare_database.sh on Wed Jul 1 16:09:25 CST 2015
#
# For information describing how to configure the Cloudera Manager Server
# to connect to databases, see the "Cloudera Manager Installation Guide."
#
com.cloudera.cmf.db.type=mysql
com.cloudera.cmf.db.host=hadoop1
com.cloudera.cmf.db.name=scm
com.cloudera.cmf.db.user=cm
com.cloudera.cmf.db.password=cm
1
2
3
4
5
6
7
8
9
10
11
12
mysql> select user,host from mysql.user;
+------+-----------------------+
| user | host |
+------+-----------------------+
| cm | % |
| root | 127.0.0.1 |
| root | ::1 |
| cm | hadoop1 |
| root | localhost |
| root | localhost.localdomain |
+------+-----------------------+
6 rows in set (0.00 sec)

5.检查进程是否已启动

1
/etc/init.d/cloudera-scm-server start
1
2
3
[root@hadoop1 yuanxiaolong]# ps -ef | grep cloudera
root 12648 1 0 16:13 pts/2 00:00:00 su cloudera-scm -s /bin/bash -c nohup /usr/sbin/cmf-server
498 12650 12648 99 16:13 ? 00:03:09 /usr/java/jdk1.7.0_67-cloudera/bin/java -cp .:lib/*:/usr/share/java/mysql-connector-java.jar:/usr/share/java/oracle-connector-java.jar -server -Dlog4j.configuration=file:/etc/cloudera-scm-server/log4j.properties -Dfile.encoding=UTF-8 -Dcmf.root.logger=INFO,LOGFILE -Dcmf.log.dir=/var/log/cloudera-scm-server -Dcmf.log.file=cloudera-scm-server.log -Dcmf.jetty.threshhold=WARN -Dcmf.schema.dir=/usr/share/cmf/schema -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Dpython.home=/usr/share/cmf/python -XX:+UseConcMarkSweepGC -XX:-CMSConcurrentMTEnabled -XX:+UseParNewGC -XX:+HeapDumpOnOutOfMemoryError -Xmx2G -XX:MaxPermSize=256m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp -XX:OnOutOfMemoryError=kill -9 %p com.cloudera.server.cmf.Main

6.进入web界面,第一次登陆会引导创建用户、密码

1
web 地址 : http://10.200.8.43:7180/cmf/login


配置集群

选择版本,由于我用6台做测试集群,因此选择免费版即可。根据自己需要选择 免费 or 收费

按hostname查找主机,正好验证刚才修改的hostname

下面就是安装 cdh 和 cm 了,根据自己需要选择安装类型。我避免线上安装太慢,因此预先下载好数据包,并通过离线安装数据包的方式安装。

cdh5.0.1

cm5.4.1

由于我们 cloudera-manager-server(后面简称cms) 是通过 yum 安装的,因此很可能是最新版本,而最新的 cms 需要最新的 cm 来配合,不然会有兼容问题,安装不成功。到时候自己去网站获取cm的包

下载比较久 可以用 screen 命令 ,开启2个后台窗口,慢慢下载

1
2
3
4
5
screen -S <name> #创建
screen ctrl+A+D #退出
screen -r <name> #进入
screen -ls #查看
screen ctrl + D #中止

可以在本地,安装一个 ngnix 去代理 静态目录,nginx 可能需要 编译安装 ,安装好后,修改配置

1
2
3
4
5
location / {
root /data/clouderaManager/;
autoindex on;
index index.html index.htm
}
1
2
3
4
5
sudo /usr/local/nginx/sbin/nginx -s reload

sudo /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful


配置cdh

安装完成后,就需要配置cdh了,首次安装会自动引导到如下界面。根据不同机器选择不同角色,一般Namenode机器需要选个较好的机器,且跟Mysql服务分开

给每个机器划分完角色(不同的服务,例如 hive oozie yarn 等)后,则需要为这些服务创建 mysql 数据库

1
2
3
4
5
6
7
8
9
10
11
grant all on *.* to 'hive'@'%' identified by 'hive' with grant option;
CREATE DATABASE if not exists hive DEFAULT CHARACTER SET latin1;

grant all on *.* to 'am'@'%' identified by 'am' with grant option;
CREATE DATABASE if not exists activitymonitor DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

grant all on *.* to 'rm'@'%' identified by 'rm' with grant option;
CREATE DATABASE if not exists reportmanager DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

grant all on *.* to 'oozie'@'%' identified by 'oozie' with grant option;
CREATE DATABASE if not exists oozie DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

由于安装服务的机器,不一定有 mysql-connector-java 的驱动,所以需要在每台机器上 运行 sudo yum install mysql-connector-java (由于cdh的安装跟apache 版本不一样,很多文件夹都是被 “打散” 了 ,当你不清楚文件路径时,这样最方便。如果清楚,则在对应 lib 文件夹下 放置一个 mysql 的驱动jar包即可)

没有驱动会报错

安装完成再测试

继续配置,一般默认即可


注意:这里关于数据目录需要说明一下,图中cdh检测后给出的是 /data/dfs/dn ,别人安装的时候可能不是这个路径,为什么呢?

因为我的机器只有一个磁盘,当有多个磁盘时,为了让所有磁盘都存放hdfs数据,则这里就是多个目录(以后的角色组就是这样的概念)。

继续配置

恭喜你,所有安装成功了!


查漏补缺

问题一:oozie 的 web UI 缺少extjs而无法访问的问题

解决:下载extjs-2.2 解压并放到部署 oozie 机器 /var/lib/oozie 目录下机器 (我的百度云地址 共享extjs 2.2)再次访问即可

问题二:hive ddl 操作失败,无论是否通过HUE

1
MetaException(message:javax.jdo.JDODataStoreException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OPTION SQL_SELECT_LIMIT=DEFAULT' at line 1

原因,安装了高版本的 mysql , 使用了低版本的 mysql-connector-java 驱动

解决:下载最新驱动 放到 “Hive Metastore” 的机器路径 /usr/lib/hive/lib/mysql-connector-java-5.1.35.jar 下,然后

重启 hive metastore 和 hive server 2 及 HUE ,即可

问题三:用户权限设置

默认hdfs的 超级用户 和 超级组 为 hdfs 和 supergroup ,登录 liunx 机的用户,必须在 supergroup 组里,才能操作 hdfs ,因此需要

1.如果没有supergroup组,则创建supergroup组,在linux机器上 groupadd supergroup ,并查看 /etc/group 来确认

2.添加当前linux机器用户,至supergroup组里 sudo usermod -a -G supergroup yuanxiaolong ,并查看 /etc/passwd 来确认

3.配置hdfs授权用户 “群集”->”HDFS”->”配置”->”服务范围”->”安全性”

4.推送客户端配置

通过hue查询hive,或提交Job 所用的账号名称,是需要在 linux 上真实存在的,hue仅仅是个UI,所有权限认证都是在 Linux 和 hadoop 之间完成的。所以如果hue的用户,在Linux上不存在,但又想
操作hadoop,则需要用 adduser <yourname> 添加用户。

问题四:新增节点无法加入到 hdfs 和 yarn 里

通常需要先在 CM 里执行 “重新授权” ,然后对应 hdfs 或 yarn 执行后,再重启

1
2
hdfs dfsadmin -refreshNodes
yarn rmadmin -refreshNodes

PS:感谢张海波同学的指导
参考资料: http://www.cnblogs.com/jasondan/p/4011153.html