转载:http://fenriswolf.me/2012/12/06/cloudera-manager-free-edition-4-1-和-cdh-4-1-2-简易安装教学/
安装及管理一个大的Hadoop cluster 并不是只要下载tar files 解压缩并启动services 这么简单。安装及管理一个大的Hadoop cluster 并不是只要下载tar files 解压缩并启动services 这么简单。 后续有非常多设定、监控等麻烦的事要处理。后续有非常多设定、监控等麻烦的事要处理。 Cloudera Manager 就整合了一系列的功能让系统管理者能更方便的维护Hadoop。 Cloudera Manager 就整合了一系列的功能让系统管理者能更方便的维护Hadoop。 Free Edition 的限制如下 Free Edition 的限制如下
- 只支援50 个nodes只支援50 个nodes
- 没有设定的版本控管没有设定的版本控管
- 没有支援LDAP/Kerberos Authentication没有支援LDAP/Kerberos Authentication
- 没有进阶的services 监控选项,如health check没有进阶的services 监控选项,如health check
- 没有Logs 搜寻功能没有Logs 搜寻功能
更多说明在How to Upgrade the Free Edition to Cloudera Manager可以找到。更多说明在How to Upgrade the Free Edition to Cloudera Manager可以找到。 但是对小型的cluster 或是新手想试试怎么装Hadoop 很有帮助。但是对小型的cluster 或是新手想试试怎么装Hadoop 很有帮助。
1.前置作业 <br />在Requirements for Cloudera Manager里有提到Cloudera Manager所支持的所有作业系统,包括RHEL, CentOS, SUSE, Ubuntu等等。 这篇文章会以CentOS 6.3 为例子。这篇文章会以CentOS 6.3 为例子。
- 官方建议/var 至少要留5G 的空间。官方建议/var 至少要留5G 的空间。 以个人经验,/usr/lib 至少要550M 以上,所有Hadoop 相关的packages 都会装在这个位置以个人经验,/usr/lib 至少要550M 以上,所有Hadoop 相关的packages 都会装在这个位置
- RAM 建议4G,不过本篇所用的VMs 只给了2G RAM 建议4G,不过本篇所用的VMs 只给了2G
- 如果使用Cloudera 所提供的yum repository,要确认网络能通及yum proxy 设定正确如果使用Cloudera 所提供的yum repository,要确认网路能通及yum proxy 设定正确
- DNS 设定要正确,或是用/etc/hosts 的设定来取代DNS。 DNS 设定要正确,或是用/etc/hosts 的设定来取代DNS。 hostname 命名里不能有_字符,不然启动Hadoop services 时会失败。 hostname命名里不能有_字符,不然启动Hadoop services时会失败。 至于要不要给domain name 则见人见智。至于要不要给domain name 则见人见智。 以正式环境来说有设定会比较好。以正式环境来说有设定会比较好。 以下是这个范例所使用的设定以下是这个范例所使用的设定
1 192.168.1.110 hadoop-master
2 192.168.1.111 hadoop-worker01
3 192.168.1.112 hadoop-worker02
- Cloudera Manager Server 可用SSH 连到所有需要安装Hadoop 的机器 Cloudera Manager Server 可用SSH 连到所有需要安装Hadoop 的机器
- 确认防火墙不会阻挡所有的操作。确认防火墙不会阻挡所有的操作。 以internal Hadoop 来说一般会把防火墙关掉或反安装以避免一些使用上的问题。以internal Hadoop 来说一般会把防火墙关掉或反安装以避免一些使用上的问题。 如果对安全性控管有高度要求的话,可以参考Configuring Ports for Cloudera Manager Free Edition来开放需要的ports如果对安全性控管有高度要求的话,可以参考Configuring Ports for Cloudera Manager Free Edition来开放需要的ports
- 确认SELinux 不会阻挡所有的操作,建议是直接关掉确认SELinux 不会阻挡所有的操作,建议是直接关掉
- 确认不会更动到Cloudera 会使用的users/groups 权限。确认不会更动到Cloudera 会使用的users/groups 权限。 可参考Requirements for Cloudera Manager最下方的清单可参考Requirements for Cloudera Manager最下方的清单
2. 安装Cloudera Manager Server 2.安装Cloudera Manager Server
从Cloudera Manager Free Edition Download下载最新版的cloudera-manager-installer.bin 并执行。从Cloudera Manager Free Edition Download下载最新版的cloudera-manager-installer.bin并执行。
cloudera-manager-installer.bin 会需要先安装JDK,如果系统没有的话会自动安装Cloudera 建议的版本Oracle JDK 1.6.0_31。 cloudera-manager-installer.bin 会需要先安装JDK,如果系统没有的话会自动安装Cloudera 建议的版本Oracle JDK 1.6.0_31。 以这篇文章所用的VMs 都已经装了Oracle JDK 1.6.0_37,则此步骤会被省略。以这篇文章所用的VMs 都已经装了Oracle JDK 1.6.0_37,则此步骤会被省略。
接下来就可以用http://cms:7180打开admin console。接下来就可以用http://cms:7180打开admin console。 默认的账号密码是admin/admin。预设的帐号密码是admin/admin。 Cloudera Manager Server 对权限控管并没有做的很好,只有一个admin 的账号。 Cloudera Manager Server 对权限控管并没有做的很好,只有一个admin 的帐号。 如果有安全性考虑请自行修改密码。如果有安全性考虑请自行修改密码。
如果admin console 无法正常运作,请看/var/log/cloudera-scm-server 下的log 讯息。如果admin console 无法正常运作,请看/var/log/cloudera-scm-server 下的log 讯息。 解决问题后重启service解决问题后重启service
1
service cloudera-scm-server restart
3. 安装Hadoop 3.安装Hadoop
- 进入的第一页会显示你正在用Free Edition,直接把这个窗口关掉或点选Just Install the Latest Free Edition进入的第一页会显示你正在用Free Edition,直接把这个视窗关掉或点选Just Install the Latest Free Edition
- 第二页会显示Cloudera Manager Server 会安装的所有packages。第二页会显示Cloudera Manager Server 会安装的所有packages。 这部分除了Impala 之外,其他的packages 无法选择不装,MapReduce 也会装MRv1 及MRv2,所以会吃掉系统至少550M 以上的硬盘空间。这部分除了Impala 之外,其他的packages 无法选择不装,MapReduce 也会装MRv1 及MRv2,所以会吃掉系统至少550M 以上的硬盘空间。 画面上没有显示,但因为package 相依性的关系,Bigtop 和Pig 也是会被装进系统里的。画面上没有显示,但因为package 相依性的关系,Bigtop 和Pig 也是会被装进系统里的。
- 加入要安装的机器名称或IP。加入要安装的机器名称或IP。 可以用pattern来指定多台机器。可以用pattern来指定多台机器。 以这个范例而言会有192.168.1.110、192.168.1.111、192.168.1.112 三台机器。以这个范例而言会有192.168.1.110、192.168.1.111、192.168.1.112 三台机器。
- 确认所有的机器已经在名单中,而且SSH 正常运作确认所有的机器已经在名单中,而且SSH 正常运作
- Cloudera Manager 4.1 可以支持CDH3 或CDH4。 Cloudera Manager 4.1 可以支持CDH3 或CDH4。 这边是直接用最新版。这边是直接用最新版。
Impala 1.0 Beta 已经出了,但是现在的测试并不会用到,所以选None 。 Impala 1.0 Beta已经出了,但是现在的测试并不会用到,所以选None 。 Impala 要求整个Hadoop cluster 一定要在RHEL/CentOS 6 上面执行,cluster 内混用Ubuntu、SuSE 或RHEL/CentOS 5.x 都是不行的,想试用的要注意OS 版本。 Impala 要求整个Hadoop cluster 一定要在RHEL/CentOS 6 上面执行,cluster 内混用Ubuntu、SuSE 或RHEL/CentOS 5.x 都是不行的,想试用的要注意OS 版本。
Yum repository 如果用默认值,Cloudera Manager 会在/etc/yum.repos.d 里新增一个cloudera-cdh4.repo 来安装所有必要的packages。 Yum repository 如果用预设值,Cloudera Manager 会在/etc/yum.repos.d 里新增一个cloudera-cdh4.repo 来安装所有必要的packages。 所以要确认是否连的到archive.cloudera.com 。所以要确认是否连的到archive.cloudera.com 。 在production 的环境不建议直接使用Cloudera 的yum repository,因为Cloudera 版本的变动很快但yum repository 只会放最新版,所以有可能造成机器装的版号不一致。在production 的环境不建议直接使用Cloudera 的yum repository,因为Cloudera 版本的变动很快但yum repository 只会放最新版,所以有可能造成机器装的版号不一致。 例如旧机器装到4.1.1,但新机器装到4.1.2。例如旧机器装到4.1.1,但新机器装到4.1.2。 这有两种解法这有两种解法- 由IT 建立一个private yum repository 并准备好所有需要的packages。由IT 建立一个private yum repository 并准备好所有需要的packages。
- 直接修改cloudera-cdh4.repo 中的baseurl 参数,指定明确的版号,如http://archive.cloudera.com/cdh4/redhat/6/x86_64/cdh/4.1.1/或http://archive.cloudera.com/cdh4/redhat/6/x86_64/cdh/4.1.2/直接修改cloudera-cdh4.repo中的baseurl参数,指定明确的版号,如http://archive.cloudera.com/cdh4/redhat/6/x86_64/cdh/4.1.1/或http://archive. cloudera.com/cdh4/redhat/6/x86_64/cdh/4.1.2/
- 决定SSH 的权限及存取方式。决定SSH 的权限及存取方式。 偷懒一点就可以用root 身份并给密码。偷懒一点就可以用root 身份并给密码。 但比较好的做法是把ssh key 先放到所有的机器上。但比较好的做法是把ssh key 先放到所有的机器上。 如果不用root 账号就要确定指定的user 有不需要打密码就能sudo 的权限。如果不用root 帐号就要确定指定的user 有不需要打密码就能sudo 的权限。
进入安装程序进入安装程序
安装过程中可以点选Details看Cloudera Manager 正在执行的动作。安装过程中可以点选Details看Cloudera Manager正在执行的动作。 每台机器都会先装Cloudera Manager Agent 来设定及监控Hadoop services,再装Oracle JDK 1.6.0_31 和所有Hadoop packages。每台机器都会先装Cloudera Manager Agent 来设定及监控Hadoop services,再装Oracle JDK 1.6.0_31 和所有Hadoop packages。
在安装过程中难免会遇到失败的状况。在安装过程中难免会遇到失败的状况。 这边故意制造了一个会出错的例子。这边故意制造了一个会出错的例子。
点选Details可以看错误讯息点选Details可以看错误讯息
以这个例子而言是Cloudera Manager Agent 启动失败。以这个例子而言是Cloudera Manager Agent 启动失败。 Console 上并没有显示所有的log,log 档案在/var/log/cloudera-scm-agent/cloudera-scm-agent.out Console 上并没有显示所有的log,log 档案在/var/log/cloudera-scm-agent/cloudera-scm-agent.out
- /usr/lib64/cmf/agent/src/cmf/agent.py:24: DeprecationWarning: the sha module is deprecated; use the hashlib module instead
- import sha
- /usr/lib64/cmf/agent/src/cmf/monitor/host/network_interfaces.py:11: DeprecationWarning: the sets module is deprecated
- from sets import Set
- [03/Nov/2012 21:27:37 +0000] 7692 MainThread agent ERROR Could not determine hostname or ip address; proceeding.
- Traceback (most recent call last):
- File "/usr/lib64/cmf/agent/src/cmf/agent.py", line 1204, in parse_arguments
- ip_address = socket.gethostbyname(fqdn)
- gaierror: [Errno -2] Name or service not known
- usage: agent.py [-h] [--agent_dir AGENT_DIR]
- [--agent_httpd_port AGENT_HTTPD_PORT] --package_dir
- PACKAGE_DIR [--supervisord_path SUPERVISORD_PATH]
- [--supervisord_httpd_port SUPERVISORD_HTTPD_PORT]
- [--standalone STANDALONE] [--master MASTER]
- [--environment ENVIRONMENT] [--host_id HOST_ID]
- [--disable_supervisord_events] [--disable_eager_heartbeats]
- --hostname HOSTNAME --ip_address IP_ADDRESS [--use_tls]
- [--client_key_file CLIENT_KEY_FILE]
- [--client_cert_file CLIENT_CERT_FILE]
- [--verify_cert_file VERIFY_CERT_FILE]
- [--client_keypw_file CLIENT_KEYPW_FILE] [--logfile LOGFILE]
- [--optional_token] [--clear_agent_dir]
- agent.py: error: argument --hostname is required
- [03/Nov/2012 21:27:37 +0000] 7692 Dummy-1 agent INFO Stopping agent...
这个错误是因为在/etc/hosts 里IP/hostname 的对应不正确,修好之后再点选Retry 。这个错误是因为在/etc/hosts里IP/hostname的对应不正确,修好之后再点选Retry 。 Cloudera Manager 会先把之前的所有操作rollback,回复到初始状态之后才重装。 Cloudera Manager 会先把之前的所有操作rollback,回复到初始状态之后才重装。
- 三台机器都安装成功三台机器都安装成功
- 接下来会做所有机器的检查,项目包括接下来会做所有机器的检查,项目包括
- 网络设定网路设定
- 各机器的系统时间是否同步。各机器的系统时间是否同步。 这部分容易被忽略但是很重要,如果没同步,Hadoop/HBase/Kerberos Authentication 会发生很多奇怪的状况而且难debug这部分容易被忽略但是很重要,如果没同步,Hadoop/HBase/Kerberos Authentication 会发生很多奇怪的状况而且难debug
- Hadoop users/groups 权限及个数是否相同 Hadoop users/groups 权限及个数是否相同
- HDFS 的设定 HDFS 的设定
- 机器上安装的版本机器上安装的版本
- 显示检查的结果显示检查的结果
- 这是所有机器的列表。这是所有机器的列表。 点选Host Inspector可以重做一次上面所说的检查。点选Host Inspector可以重做一次上面所说的检查。
在View Columns选择Physical Attributes可以切换看CPU/Memory/Disk 的使用状况在View Columns选择Physical Attributes可以切换看CPU/Memory/Disk的使用状况
4. 新增cluster 及启动Hadoop services 4.新增cluster及启动Hadoop services
- 机器都装好之后就可以进Services tab,选择Add Cluster机器都装好之后就可以进Services tab,选择Add Cluster
- 这边选择要加入这个cluster 的机器。这边选择要加入这个cluster 的机器。 因为这个环境是新装的,所以直接用Use Only Currently Managed Hosts就可以了因为这个环境是新装的,所以直接用Use Only Currently Managed Hosts就可以了
- 选择要启动的CDH 版本及services。选择要启动的CDH 版本及services。 为了测试方便,只选了HDFS 和MRv1 两个services。为了测试方便,只选了HDFS 和MRv1 两个services。 决定之后不要急着按Continue ,而是要选Inspect Role Assignments做一些微调决定之后不要急着按Continue ,而是要选Inspect Role Assignments做一些微调
- 这个页面会显示Cloudera Manager 帮你启动services 的详细设定。这个页面会显示Cloudera Manager 帮你启动services 的详细设定。 以这个例子而言,hadoop-master 可以把DataNode 和TaskTracker 的选项拿掉。以这个例子而言,hadoop-master 可以把DataNode 和TaskTracker 的选项拿掉。
- 再来是最基本启动services 会用到的设定,细部设定页面后面会说明。再来是最基本启动services 会用到的设定,细部设定页面后面会说明。
- 因为是新的cluster,会先做HDFS format,启动HDFS services,在HDFS 上建立tmp 目录,启动MapReduce services,及部属client 的设定因为是新的cluster,会先做HDFS format,启动HDFS services,在HDFS 上建立tmp 目录,启动MapReduce services,及部属client 的设定
- 显示所有services 的执行状况显示所有services 的执行状况
- 点选hdfs1>Configuration会列出所有细部的设定,Cloudera Manager 会依机器的规格而给出一些建议值。点选hdfs1>Configuration会列出所有细部的设定,Cloudera Manager会依机器的规格而给出一些建议值。 新手也可以参考这个页面了解有多少参数可以设定,及其意义。新手也可以参考这个页面了解有多少参数可以设定,及其意义。 所有services 的设定方式都是由Configuration tab 进入。所有services的设定方式都是由Configuration tab进入。
执行环境执行环境
CentOS 6.3 CentOS 6.3
JDK 1.6.0_37 JDK 1.6.0_37
Cloudera Manager 4.1 Cloudera Manager 4.1
Cloudera CDH4.1.2 Cloudera CDH4.1.2
参考数据参考资料
Cloudera Manager 4.1 Free Edition Documentation Cloudera Manager 4.1 Free Edition Documentation