Centos6.5 下安装 Cloudera

一、准备工作 (这里的是公众的准备步骤)

* 系统服务

  1. 关闭防火墙
  2. service iptables stop
  3. 关闭selinux
  4. setenforce 0
  5. 需要重启
  6. vim /etc/selinux/config
  7. SELINUX=disabled

1、设置所有集群机器的 hostname

  1. 设置 HOSTNAME 域名统一
  2. master
  3. vi /etc/sysconfig/network
  4. HOSTNAME=dev1.jsonlin.cn
  5. slave1
  6. vi /etc/sysconfig/network
  7. HOSTNAME=dev1.jsonlin.cn
  8. slave2
  9. vi /etc/sysconfig/network
  10. HOSTNAME=dev2.jsonlin.cn
  11. slave3
  12. vi /etc/sysconfig/network
  13. HOSTNAME=dev3.jsonlin.cn
  14. 重启后生效

2、创建执行用户(每台服务器)

注:决定用哪个用户执行,就创建哪个用户,如果是root用户则这一步略过

  1. groupadd -r hadoop
  2. useradd -g hadoop hadoop

3、设置免ssh登陆(每台服务器)

  1. 每台服务器生成key
  2. ssh-keygen -t rsa -P ""

4、master 分发 key 免密码访问

4.1、说明 authorized_keys

  1. master 需要对所有的 slave 免密码访问
  2. master 需要对 master 免密码访问
  3. master 要分发给所有的 slave

4.2、具体实现 authorized_keys

  1. a) 设置authorized_keys
  2. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  3. (OR)
  4. cp id_rsa.pub authorized_keys
  5. b) 开始分发给slave
  6. scp ~/.ssh/authorized_keys hadoop@dev1.jsonlin.cn:~/.ssh/
  7. scp ~/.ssh/authorized_keys hadoop@dev2.jsonlin.cn:~/.ssh/
  8. scp ~/.ssh/authorized_keys hadoop@dev3.jsonlin.cn:~/.ssh/

4.3、安装 Java 7

具体百度啦,这个怎么可能难道你呢,出现的结果这样就对了

  1. [root@dev1 hadoop]# java -version
  2. java version "1.7.0_75"
  3. Java(TM) SE Runtime Environment (build 1.7.0_75-b13)
  4. Java HotSpot(TM) 64-Bit Server VM (build 24.75-b04, mixed mode)

4.4、所有节点配置 NTP 服务

4.4.1、为什么要安装 NTP

集群中所有主机必须保持时间同步,如果时间相差较大会引起各种问题。

master 节点作为 ntp 服务器与外界对时中心同步时间,随后对所有 datanode 节点提供时间同步服务。

所有 datanode 节点以 master 节点为基础同步时间。

4.4.2、NTP 时间服务器安装

详细 http://www.cnblogs.com/liuyou/archive/2012/07/29/2614338.html

  1. 1) 所有节点都要安装 NTP
  2. Centos 下安装
  3. yum install ntp 安装
  4. chkconfig ntpd on 开机启动
  5. chkconfig --list ntpd
  6. ***master 节点操作。slave 节点走 2.2 的步骤***
  7. 先安装 NTP 服务
  8. 2.1) master (master 节点作为局域网内的时间服务器, )
  9. a) 手动同步下系统时间,以 ntp.sjtu.edu.cn 时间为准
  10. ntpdate -u ntp.sjtu.edu.cn
  11. ntpdate -u tock.stdtime.gov
  12. b) 修改配置文件 (看见没有的就加一条)
  13. vim /etc/ntp.conf
  14. #允许本机的所有操作
  15. restrict 127.0.0.1
  16. restrict -6 ::1
  17. #拒绝客户端的所有操作
  18. restrict default kod nomodify notrap nopeer noquery
  19. #设置常用的同步服务器(master专属) ntp.sjtu.edu.cn
  20. server ntp.sjtu.edu.cn prefer
  21. c) 启动服务,开机启动操作。
  22. ***slave 节点操作***
  23. 2.2) slave 节点 (slave master 节点作为时间服务器)
  24. a) 先手动同步一下时间,已主节点为准
  25. ntpdate -u dev1.jsonlin.cn
  26. b) 配置ntp客户端 slave(所有datanode节点)
  27. vim /etc/ntp.conf
  28. restrict 127.0.0.1
  29. restrict -6 ::1
  30. restrict default kod nomodify notrap nopeer noquery
  31. #设置同步服务器(这里用的是 master 的域名地址或者IP地址)
  32. server dev1.jsonlin.cn prefer
  33. c) 启动服务,开机启动操作。
  34. 3) 启动操作 master slave 通用
  35. service ntpd start
  36. 表示 启动成功
  37. [root@dev1 hadoop]# ntpstat
  38. synchronised to NTP server (202.112.31.197) at stratum 3
  39. time correct to within 82 ms
  40. polling server every 128 s
  41. --------------OR----------------
  42. [root@dev1 hadoop]# netstat -tunlp | grep ntp
  43. udp 0 0 192.168.1.109:123 0.0.0.0:* 2805/ntpd
  44. udp 0 0 127.0.0.1:123 0.0.0.0:* 2805/ntpd
  45. udp 0 0 0.0.0.0:123 0.0.0.0:* 2805/ntpd
  46. udp 0 0 ::1:123 :::* 2805/ntpd
  47. udp 0 0 fe80::20c:29ff:fe44:3f09:123 :::* 2805/ntpd
  48. udp 0 0 :::123 :::* 2805/ntpd

二、Cloudera Manager

1、Cloudera Manager 介绍

Cloudera Manager 可以使集群中主机自动安装Hadoop,Hive,zookeeper,impalal等组件,无需做复杂的一系列配置。

Cloudera Express 版本是免费的

Cloudera Enterprise 是需要购买注册码的

2、Cloudera Manager 下载地址

  1. 2.1) 下载地址
  2. Cloudera Manager 下载地址
  3. 找到对应的系统版本下载
  4. http://archive-primary.cloudera.com/cm5/cm/5/
  5. or
  6. http://archive.cloudera.com/cm5/cm/5/
  7. 如:
  8. Centos6版本 : cloudera-manager-el6-cm5.3.2_x86_64.tar.gz
  9. Ubuntu版本 : cloudera-manager-trusty-cm5.3.2_amd64.tar.gz
  10. 2.2) Cloudera Manager 管理的 CDH 安装包下载地址 (Cloudera Manager 是通过这种方式管理各个Hadoop组件的)
  11. 所有的版本包下载 : http://archive-primary.cloudera.com/cdh5/parcels/
  12. 最新版本下载 : http://archive.cloudera.com/cdh5/parcels/latest/
  13. Centos6下载:(对应版本-el6)
  14. CDH-5.3.2-1.cdh5.3.2.p0.5-el6.parcel
  15. CDH-5.3.2-1.cdh5.3.2.p0.5-el6.parcel.sha1
  16. manifest.json
  17. Ubuntu下载:(对应版本trusty)
  18. CDH-5.3.2-1.cdh5.3.2.p0.10-trusty.parcel
  19. CDH-5.3.2-1.cdh5.3.2.p0.10-trusty.parcel.sha1
  20. manifest.json
  21. c) 安装版本、下载详细说明汇总
  22. http://www.aboutyun.com/thread-8908-1-1.html

3、Cloudera Manager 安装介绍

3.1、 CM (Cloudera Manager) 有三种安装方式

  1. 1) cloudera-manager-installer.bin 安装
  2. 只要从官网下载cloudera-manager-installer.bin,然后执行这个bin文件
  3. 参考文章:
  4. http://www.aboutyun.com/thread-9303-1-1.html
  5. http://www.aboutyun.com/thread-9075-1-1.html
  6. 2) rpmyumapt-get方式在线安装
  7. 因为 rpm 对包依赖的关系不好,所以产生了yum
  8. 参考文章:
  9. http://www.aboutyun.com/thread-9107-1-1.html
  10. 3) Tarballs (本文安装方式)
  11. tar 包管理源码安装

4、Cloudera Manager 安装

记得前面的准备工作要做哦

详细地址:http://www.cnblogs.com/jasondan/p/4011153.html

其中 /opt/cloudera-manager/cm-5.3.2/ 作为一个自定义目录,5.3.2 作为一个版本,如果使用其他版本的 请直接替换成对应的版本号即可

4.1、安装命令 (master 节点)

  1. 1) 目录规划
  2. mv cloudera-manager-el6-cm5.3.2_x86_64.tar.gz /opt/
  3. tar -zxvf cloudera-manager-el6-cm5.3.2_x86_64.tar.gz
  4. mkdir /opt/cloudera-manager
  5. mv /opt/cm-5.3.2/ /opt/cloudera-manager/
  6. 2) Cloudera Manager Server 建立数据库
  7. #添加 java mysql 驱动类(下载地址 http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.40/mysql-connector-java-5.1.40.jar)
  8. cp -arip mysql-connector-java-5.1.31-bin.jar /opt/cloudera-manager/cm-5.3.2/share/cmf/lib/
  9. a) mysql 上建立scm数据库
  10. /opt/cloudera-manager/cm-5.3.2/share/cmf/schema/scm_prepare_database.sh mysql -h127.0.0.1 -uroot -p514591 --scm-host localhost scm scm scm
  11. #---格式是: scm_prepare_database.sh 数据库类型 数据库服务器 数据库管理用户名 管理密码 --scm-host Cloudera_Manager_Server 所在的机器 database-name(Cloudera Manager Server 数据库的名称) username( Cloudera Manager Server 数据库的用户名) password(Cloudera Manager Server 数据库的密码)
  12. #---出现如下表示成功
  13. ully connected to database.
  14. All done, your SCM database is configured correctly!
  15. b) 启动 Cloudera Manager Server 服务端口 (master,等待全部配置好再启动切记)
  16. /opt/cloudera-manager/cm-5.3.2/etc/init.d/cloudera-scm-server start [--restart重启 --stop 关闭]
  17. c) 设置成开机启动(记住哦)
  18. vim /etc/rc.d/rc.local
  19. #---mysql开机启动
  20. /usr/local/mysql-5.6.21/support-files/mysql.server start
  21. 3) Cloudera Manager Agents 服务端口配置
  22. a) 先修改 Agents 配置文件 (master 上操作)
  23. vim /opt/cloudera-manager/cm-5.3.2/etc/cloudera-scm-agent/config.ini
  24. #这里写 master 域名或者Ip
  25. server_host=dev1.jsonlin.cn
  26. server_port=7182 #服务端口
  27. b) 把整个目录分发给 slave (master 上操作)
  28. scp -r /opt/cloudera-manager root@dev2.jsonlin.cn:/opt/
  29. scp -r /opt/cloudera-manager root@dev3.jsonlin.cn:/opt/
  30. scp -r /opt/cloudera-manager root@dev4.jsonlin.cn:/opt/
  31. c) 添加 cloudera-scm 用户 (所有节点)
  32. useradd --system --home=/opt/cloudera-manager/cm-5.3.2/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
  33. d) cloudera-scm-agent 为所有的节点都启动 (所有节点,等待全部配置好再启动切记)
  34. /opt/cloudera-manager/cm-5.3.2/etc/init.d/cloudera-scm-agent start
  35. #---所有节点开机启动
  36. vim /etc/rc.d/rc.local
  37. #cloudera-scm-agent
  38. /opt/cloudera-manager/cm-5.3.2/etc/init.d/cloudera-scm-agent start

4.2、准备Parcels,用以安装CDH5

4.2.1、下载地址
  1. http://archive.cloudera.com/cdh5/parcels/latest/
  2. Centos6 :
  3. CDH-5.3.2-1.cdh5.3.2.p0.5-el6.parcel
  4. CDH-5.3.2-1.cdh5.3.2.p0.5-el6.parcel.sha1
  5. manifest.json
  6. 其他系统如上图
  7. ubuntu :
  8. CDH-5.3.2-1.cdh5.3.2.p0.10-trusty.parcel
  9. CDH-5.3.2-1.cdh5.3.2.p0.10-trusty.parcel.sha1
  10. manifest.json
4.2.2、存放目录
  1. 1) 存放目录 (master)
  2. #---没有则创建一个 (存放到 master 的 /opt/cloudera/parcel-repo)
  3. ll /opt/cloudera/parcel-repo
  4. mkdir -p /opt/cloudera/parcel-repo
  5. 2) 存放文件到 /opt/cloudera/parcel-repo/ (master)
  6. CDH-5.3.2-1.cdh5.3.2.p0.5-el6.parcel
  7. CDH-5.3.2-1.cdh5.3.2.p0.5-el6.parcel.sha1
  8. manifest.json
  9. 3) *.sha1 文件改名为 *.sha
  10. mv /opt/cloudera/parcel-repo/CDH-5.3.2-1.cdh5.3.2.p0.5-el6.parcel.sha1 /opt/cloudera/parcel-repo/CDH-5.3.2-1.cdh5.3.2.p0.5-el6.parcel.sha

4.3 准备浏览器跑起来,辛苦这么久嘿嘿

  1. 1) 访问 master 的服务 7180 端口
  2. http://dev1.jsonlin.cn:7180
  3. #启动 cloudera-scm-server
  4. /opt/cloudera-manager/cm-5.3.2/etc/init.d/cloudera-scm-server restart
  5. #启动 cloudera-scm-agent
  6. /opt/cloudera-manager/cm-5.3.2/etc/init.d/cloudera-scm-agent restart
  7. 先让 cloudera-scm-server 启动成功
  8. netstat -tunlp | grep jave --- 7180
  9. 再启动 cloudera-scm-agent
  10. netstat -tunlp | grep jave --- 7182
  11. 一般需要耐心等待几分钟才能看到端口
  12. #如果有问题看日志文件,在这个目录下
  13. /opt/cloudera-manager/cm-5.3.2/log/
  14. 端口
  15. 7180 cloudera-manager 提供的 web 端口
  16. 7182 cloudera-manage-server 主节点提供的 manage 端口

4.4 错误处理

  1. 1) cloudera-scm-agent restart报错:ImportError: No module named _io
  2. a) tar 包安装解决方案
  3. cp /opt/cloudera-manager/cm-5.3.2/lib/cmf/agent/build/env/bin/python2.7 /opt/cloudera-manager/cm-5.3.2/lib/cmf/agent/build/env/bin/python-2015-03-05
  4. cp /usr/bin/python2.7 /opt/cloudera-manager/cm-5.3.2/lib/cmf/agent/build/env/bin/python
  5. b) yum/apt 安装解决方案, 文章地址 : http://www.aboutyun.com/blog-10256-891.html
  6. 32 位系统
  7. mv /usr/lib/cmf/agent/build/env/bin/python /usr/lib/cmf/agent/build/env/bin/python.bak
  8. cp /usr/bin/python2.7 /usr/lib/cmf/agent/build/env/bin/python
  9. 64 位系统
  10. mv /usr/lib64/cmf/agent/build/env/bin/python /usr/lib/cmf/agent/build/env/bin/python.bak
  11. cp /usr/bin/python2.7 /usr/lib/cmf/agent/build/env/bin/python
  12. 2) 安装 hive 的时候 Failed to Create Hive Metastore Database Tables
  13. a) 安装 java 驱动类
  14. sudo apt-get install libmysql-java
  15. b) 或者在 /etc/profile 引入这个包
  16. $JAVA_HOME/lib/mysql-connector-java-5.1.31-bin.jar
  17. 3) 重新安装部署
  18. a) 删除 NameNode 里的 /dfs/dn/current/ 文件夹
  19. 删除 DataNode 里的 /dfs/dn/current/ 文件夹