install hadoop cluster with cloudera manager
更新日期:
如何利用 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-2
和yum install mysql-connector-java
将近900M ,安装较慢
环境配置
1.修改每台机器的hostname,及 /etc/hosts
1 | sed -i 's/^HOSTNAME=.*$/HOSTNAME=hadoop1/g' /etc/sysconfig/network |
1 | 10.200.8.43 hadoop1 |
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 | [root@hadoop1 yuanxiaolong]# cat /etc/cloudera-scm-server/db.properties |
1 | mysql> select user,host from mysql.user; |
5.检查进程是否已启动
1 | /etc/init.d/cloudera-scm-server start |
1 | [root@hadoop1 yuanxiaolong]# ps -ef | grep cloudera |
6.进入web界面,第一次登陆会引导创建用户、密码
1 | web 地址 : http://10.200.8.43:7180/cmf/login |
配置集群
选择版本,由于我用6台做测试集群,因此选择免费版即可。根据自己需要选择 免费 or 收费
按hostname查找主机,正好验证刚才修改的hostname
下面就是安装 cdh 和 cm 了,根据自己需要选择安装类型。我避免线上安装太慢,因此预先下载好数据包,并通过离线安装数据包的方式安装。
由于我们 cloudera-manager-server(后面简称cms) 是通过 yum 安装的,因此很可能是最新版本,而最新的 cms 需要最新的 cm 来配合,不然会有兼容问题,安装不成功。到时候自己去网站获取cm的包
下载比较久 可以用 screen
命令 ,开启2个后台窗口,慢慢下载
1 | screen -S <name> #创建 |
可以在本地,安装一个 ngnix 去代理 静态目录,nginx 可能需要 编译安装 ,安装好后,修改配置
1 | location / { |
1 | sudo /usr/local/nginx/sbin/nginx -s reload |
配置cdh
安装完成后,就需要配置cdh了,首次安装会自动引导到如下界面。根据不同机器选择不同角色,一般Namenode机器需要选个较好的机器,且跟Mysql服务分开
给每个机器划分完角色(不同的服务,例如 hive oozie yarn 等)后,则需要为这些服务创建 mysql 数据库
1 | grant all on *.* to 'hive'@'%' identified by 'hive' with grant option; |
由于安装服务的机器,不一定有 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 | hdfs dfsadmin -refreshNodes |
PS:感谢张海波同学的指导
参考资料: http://www.cnblogs.com/jasondan/p/4011153.html