Cloudera yum 方式安装

  • 安装流程

  • 1 首先配置系统环境

  • 2 安装 Cloudera Manager Server

    • 2.1 配置 yum 源, 执行安装流程
    • 2.2 配置 SCM 数据库
    • 2.3 启动 Cloudera Manager Server 服务(监控报错日志)
    • 2.4 打开 http://hostname:7180 端口, 跳过所有安装步骤, 直接添加 Cloudera Management Service 服务
  • 2 Cloudera Manager Agent -> Cloudera Manager Server 注册节点

    • 4.1 配置 yum 源, 执行安装流程
    • 4.2 修改配置 Cloudera Manager Agent 服务指向 Cloudera Manager Server 服务所在的 host, 配置文件 /etc/cloudera-scm-agent/config.ini 的 server_host -> Cloudera Manager Server
    • 4.3 手动启动 Cloudera Manager Agent 服务(监控报错日志)
    • 4.4 注意第一次 Agent 注册到 Server 节点是没有 CDH 版本的, 需要在 Server 管理界面添加已经注册的主机(分发 CDH 版本的)
    • 4.5 Cloudera Manager Server 7180 -> 主机管理界面, 点击添加主机到集群中(选中已注册的节点), 这个时候才会有 CDH 版本信息
  • 4 CDH 组件 -> Cloudera Manager Server 和 Cloudera Manager Agent 安装完成后再配置 Hadoop 组件

* 系统环境配置

1. 环境属性

  1. 1. 创建用户 cloudera-scm, 给与免密码 sudo 权限
  2. vim /etc/sudoers
  3. # 以下注释取消
  4. %wheel ALL=(ALL) NOPASSWD: ALL
  5. 1) 方法 1
  6. userdel cloudera-scm
  7. # 创建cm部署用户
  8. groupadd -r cloudera-scm
  9. # 分配到 组
  10. useradd -m -s /bin/bash -g cloudera-scm cloudera-scm
  11. # 追加用户到 sudo 组
  12. usermod -G wheel cloudera-scm
  13. # 创建hadoop用户
  14. userdel hadoop
  15. groupadd -r hadoop
  16. useradd -m -s /bin/bash -g hadoop hadoop
  17. # 追加用户到 sudo 组
  18. usermod -G wheel hadoop
  19. 2) 方法 2
  20. %cloudera-scm ALL=(ALL) NOPASSWD: ALL 账号其他配置
  21. *) sudo 权限附属配置
  22. vim /etc/sudoers
  23. # 确认包含如下
  24. Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
  25. vim /etc/pam.d/su
  26. # 确保包含如下行
  27. session required pam_limits.so
  28. 2. 同步系统时区(每台服务器的时区必须一样)
  29. yum install ntp
  30. ntpdate -d time.nist.gov 或者 ntpdate -d pool.ntp.org
  31. ntpdate -d node-host
  32. crontab -e , 添加如下命令
  33. */5 * * * * /usr/sbin/ntpdate monitor.50bang.org && /sbin/hwclock -w
  34. 3. 关闭防火墙
  35. // Centos 6
  36. service iptables stop
  37. chkconfig iptables off
  38. service ip6tables stop
  39. chkconfig ip6tables off
  40. // Centos 7
  41. systemctl stop firewalld
  42. systemctl disable firewalld
  43. 3.1 设置 HOSTNAME 域名统一
  44. vim /etc/sysconfig/network
  45. HOSTNAME=dw[N] 根据实际情况填写
  46. 4. 关闭 selinux
  47. # 临时生效
  48. setenforce 0
  49. # 永久失效
  50. vi /etc/selinux/config
  51. SELINUX=disabled
  52. 5. 安装 scp
  53. yum -y install openssh-clients
  54. 6. ssh key
  55. # 生成 key
  56. ssh-keygen
  57. # 分配
  58. ssh-copy-id -i ~/.ssh/id_rsa.pub username@hostname

2. 系统属性

  1. 1. 禁用大透明页
  2. 1.1 Centos 6:
  3. cat /sys/kernel/mm/redhat_transparent_hugepage/defrag
  4. [always] never 表示已启用透明大页面压缩。
  5. always [never] 表示已禁用透明大页面压缩。
  6. 如果启用, 请关闭
  7. echo 'never' > /sys/kernel/mm/redhat_transparent_hugepage/defrag
  8. echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled
  9. 加入开机启动中
  10. vim /etc/rc.local (给执行权限 chmod +x /etc/rc.d/rc.local )
  11. # 禁用大透明页
  12. echo 'never' > /sys/kernel/mm/redhat_transparent_hugepage/defrag
  13. echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled
  14. 1.2 Centos 7:
  15. cat /sys/kernel/mm/transparent_hugepage/defrag
  16. 如果启用, 请关闭
  17. echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag
  18. 加入开机启动中
  19. vim /etc/rc.local (给执行权限 chmod +x /etc/rc.d/rc.local )
  20. # 禁用大透明页
  21. echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag
  22. 2. vm.swappiness Linux 内核参数
  23. # 默认为 60 , 用于控制将内存页交换到磁盘的幅度, 介于 0-100 之间的值;值越高,内核寻找不活动的内存页并将其交换到磁盘的幅度就越大。
  24. cat /proc/sys/vm/swappiness
  25. # 设置为 0
  26. sysctl -w vm.swappiness=0
  27. 3. 集群挂载的文件系统,不使用 RAID LVM 文件系统
  28. 4. 最大打开的文件数
  29. sysctl -a | grep fs.file
  30. 如果比 65535 小, 则设置如下参数
  31. sudo vim /etc/security/limits.conf
  32. * hard nofile 102400
  33. * soft nofile 102400

一、安装 Cloudera Manager Server

  • Cloudera Management Service 可作为一组角色实施各种管理功能
  • Activity Monitor
    • 收集有关 MapReduce 服务运行的活动的信息。默认情况下未添加此角色。
  • Host Monitor
    • 收集有关主机的运行状况和指标信息
  • Service Monitor
    • 收集有关服务的运行状况和指标信息以及 YARN 和 Impala 服务中的活动信息
  • Event Server
    • 聚合 relevant Hadoop 事件并将其用于警报和搜索
  • Alert Publisher
    • 为特定类型的事件生成和提供警报
  • Reports Manager
    • 生成报告,它提供用户、用户组和目录的磁盘使用率的历史视图,用户和 YARN 池的处理活动,以及 HBase 表和命名空间。此角色未在 Cloudera Express 中添加。
  • Cloudera Manager 将单独管理每个角色,而不是作为 Cloudera Manager Server 的一部分进行管理,可实现可扩展性(例如,在大型部署中,它可用于将监控器角色置于自身的主机上)和隔离。
  1. * 登录 cloudera-scm 账号
  2. 1. 添加 cloudera-manager.repo 源(所有节点)
  3. Centos 6: sudo wget http://archive.cloudera.com/cm5/redhat/6/x86_64/cm/cloudera-manager.repo --directory-prefi=/etc/yum.repos.d
  4. Centos 7: sudo wget http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/cloudera-manager.repo --directory-prefi=/etc/yum.repos.d
  5. PS: 若要安装指定的版本, 修改如下参数
  6. sudo vim /etc/yum.repos.d/cloudera-manager.repo
  7. # Centos 6: 修改 baseurl 属性中的 url (url 可以指定版本)
  8. baseurl=http://archive.cloudera.com/cm5/redhat/6/x86_64/cm/5.9.0/
  9. # Centos 7: 修改 baseurl 属性中的 url (url 可以指定版本)
  10. baseurl=http://archive.cloudera.com/cm5/redhat/7/x86_64/cm/5.9.0/
  11. 更新 yum:
  12. yum update
  13. 2. 下载安装组件
  14. a) 安装 JAVA
  15. # PS 这个包在 CM 的源中
  16. sudo yum install oracle-j2sdk1.7
  17. # 加入环境变量
  18. vim ~/.bashrc
  19. # CDH JAVA HOME
  20. export JAVA_HOME=/usr/java/jdk1.7.0_67-cloudera
  21. export JRE_HOME=${JAVA_HOME}/jre
  22. export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
  23. export PATH=${JAVA_HOME}/bin:$PATH
  24. source ~/.bashrc
  25. PS) 这里可以配置 JAVA 1.8 的版本, 安装好 CM 后, 启动 Web /cmf/hardware/hosts/config, 其中可以配置 JAVA Home 的目录
  26. # 下载、安装、权限
  27. 下载软件 jdk-8u131-linux-x64.tar.gz (oracle 版本)
  28. 安装目录 /opt/app/jdk-1.8.0_131
  29. 给与 /opt/app/jdk-1.8.0_131 目录 hadoop 权限(774 -R)
  30. # 配置 Cloudera Java 软链
  31. sudo mkdir -p /usr/java/
  32. sudo ln -s /opt/app/jdk-1.8.0_131 /usr/java/jdk1.8
  33. # 配置环境变量
  34. vim ~/.bashrc
  35. # CDH JAVA HOME
  36. export JAVA_HOME=/opt/app/jdk-1.8.0_131
  37. export JRE_HOME=${JAVA_HOME}/jre
  38. export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
  39. export PATH=${JAVA_HOME}/bin:$PATH
  40. source ~/.bashrc
  41. b) 安装服务 Cloudera 组件
  42. sudo yum install cloudera-manager-daemons
  43. sudo yum install cloudera-manager-server
  44. d) 下载 mysql-connector-java-5.1.40.jar 依赖包
  45. # 下载 MySQL 驱动
  46. sudo wget http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.40/mysql-connector-java-5.1.40.jar --directory-prefix=/usr/share/java/
  47. # 放到 cmf 公用库中
  48. sudo cp /usr/share/java/mysql-connector-java-5.1.40.jar /usr/share/cmf/lib/mysql-connector-java-5.1.40.jar
  49. 3. 安装 scm 数据库
  50. 1)方法 1 使用脚本配置
  51. /usr/share/cmf/schema/scm_prepare_database.sh mysql -hmysql-host -P3306 -uroot -pxxx.com scm hadoop xxx.com
  52. 具体参数看配置 : /usr/share/cmf/schema/scm_prepare_database.sh --help
  53. 2)方法 2 编写配置文件 /etc/cloudera-scm-server/db.properties
  54. com.cloudera.cmf.db.type=mysql
  55. com.cloudera.cmf.db.host=manager1:3306
  56. com.cloudera.cmf.db.name=scm
  57. com.cloudera.cmf.db.user=hadoop
  58. com.cloudera.cmf.db.password=xxx.com
  59. com.cloudera.cmf.db.setupType=EXTERNAL
  60. 4. root 权限登录 mysql 查看账户是否生效
  61. SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
  62. 5. 监控启动服务
  63. tail -f /var/log/cloudera-scm-server/cloudera-scm-server.log
  64. # 给与目录权限
  65. sudo chmod 775 -R /opt/cloudera/parcel-repo/
  66. sudo chmod 775 -R /var/lib/cloudera-scm-server
  67. # 启动 cm 服务
  68. sudo service cloudera-scm-server restart
  69. # 查看 服务状态
  70. service cloudera-scm-server status
  71. # 监控端口
  72. netstat -tunlp
  73. 7180 : Http Web 服务
  74. 7182 : 监控通讯服务
  75. 6. 启动完成后(最后步骤)
  76. # 创建 /opt/cloudera/parcels 目录
  77. sudo mkdir -p /opt/cloudera
  78. sudo mkdir -p /opt/cloudera/parcel-repo/
  79. sudo chown cloudera-scm:cloudera-scm -R /opt/cloudera
  80. sudo chown cloudera-scm:cloudera-scm -R /opt/cloudera
  81. # 下载 3 个文件
  82. wget http://archive.cloudera.com/cdh5/parcels/5.13.1/CDH-5.13.1-1.cdh5.13.1.p0.2-el7.parcel --directory-prefix=/opt/cloudera/parcel-repo/
  83. wget http://archive.cloudera.com/cdh5/parcels/5.13.1/CDH-5.13.1-1.cdh5.13.1.p0.2-el7.parcel.sha1 --directory-prefix=/opt/cloudera/parcel-repo/
  84. wget http://archive.cloudera.com/cdh5/parcels/5.13.1/manifest.json --directory-prefix=/opt/cloudera/parcel-repo/
  85. # 修改数据 *.sha1 mv *.sha, 不然会出现如下错误 (对于此 Cloudera Manager 版本 (version) 太新的 CDH 版本不会显示)
  86. mv /opt/cloudera/parcel-repo/CDH-5.13.1-1.cdh5.13.1.p0.2-el7.parcel.sha1 /opt/cloudera/parcel-repo/CDH-5.13.1-1.cdh5.13.1.p0.2-el7.parcel.sha
  87. * 启动遇到的问题
  88. 对于此 Cloudera Manager 版本 (5.4.7) 太新的 CDH 版本不会显示
  89. 问题描述:Versions of CDH that are too new for this version of Cloudera Manager (5.4.7) will not be shown.
  90. 问题定位:PARCELS fileName=CDH-5.4.7-1.cdh5.4.7.p0.3-el6.parcel hash 值为 null,判断为parcel文件问题或scm数据库生成干扰问题
  91. 解决思路:判断为/ opt/cloudera/parcel-repo/ 目录内的本地parcel应该在scm数据库初始化结束后再放入
  92. 问题解决:停止server > 重置scm数据库 > 启动server > 复制 parcel /opt/cloudera/parcel-repo/ 目录

二、安装 Cloudera Agent

  • 请参照 安装流程 4
  1. 1. 登录 cloudera-scm 账号
  2. # 配置源 Cloudera yum 源
  3. 2. 下载安装组件
  4. a) 安装 JAVA
  5. # 同如上步骤
  6. b) 安装服务
  7. sudo yum install cloudera-manager-daemons
  8. sudo yum install cloudera-manager-agent
  9. 2. 修改配置文件
  10. sudo vim /etc/cloudera-scm-agent/config.ini
  11. # 改成这里 server 的主机地址
  12. server_host=manager1
  13. 3. 监控启动服务
  14. # 监控日志
  15. tail -f /var/log/cloudera-scm-agent/cloudera-scm-agent.log
  16. # 给与目录权限
  17. sudo chown cloudera-scm:cloudera-scm -R /var/lib/cloudera-scm-agent
  18. sudo chown cloudera-scm:cloudera-scm -R /var/run/cloudera-scm-agent
  19. # 创建 /opt/cloudera/parcels 目录
  20. mkdir -p /opt/cloudera
  21. sudo chown cloudera-scm:cloudera-scm -R /opt/cloudera
  22. # 启动 agent 服务, 开启端口
  23. sudo service cloudera-scm-agent restart
  24. # 查看运行状态
  25. service cloudera-scm-agent status
  26. # 查看监控端口
  27. netstat -tunlp
  28. 9000 : HTTP (调试)端口
  29. 19001 : supervisord 状态和控制端口;用于 Agent supervisord 之间的通信;仅内部打开(本地主机上)
  30. *. 注册可能遇到的问题
  31. 1. 时间与 cm 相差太多导致无法 agent 无法向 cm 注册
  32. 2. host ip 设置错误
  33. 查看主机与 host ip
  34. python -c 'import socket; print socket.getfqdn(), socket.gethostbyname(socket.getfqdn())'
  35. hostname 环境变量主机名不同(会导致 agent 注册到 manager, hostname 不对)
  36. 3. Failed to connect to previous supervisor.
  37. 一般这种情况不用处理, 只要能 agent 能注册到 server, 并且 agent server 是绿颜色的心态即可
  38. 参照安装步骤 4
  39. 4. cdh No extant cgroups 错误
  40. /var/run/cloudera-scm-agent /var/lib/cloudera-scm-agent 目录权限
  41. sudo chown cloudera-scm:cloudera-scm -R /var/lib/cloudera-scm-agent
  42. sudo chown cloudera-scm:cloudera-scm -R /var/run/cloudera-scm-agent
  43. 5. Error, CM server guid updated, expected 错误描述, CM 重新安装后 ID 错误
  44. rm /var/lib/cloudera-scm-agent/cm_guid , 主要原因是因为 .parcel.sha1 没有重名为 .parcel.sha
  45. 6. ERROR Failed to connect to newly launched supervisor. Agent will exit
  46. pgrep -f supervisord , 然后 Kill , 主要是更换版本的时候有服务没有杀干净
  47. *. 排查思路
  48. 1) 检查 hostname、/etc/hosts 主机 IP 是否正确
  49. 2) 是否关闭防火墙和 Selinux, 当前服务器和目标服务器
  50. 3) Agent 本身配置问题
  51. /etc/cloudera-scm-agent/config.ini
  52. 4) 检查各个节点的系统日期

三、安装 CDH 组件

  • 配置源 CDH 源
  1. *. 登录 hadoop 用户
  2. sudo wget http://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/cloudera-cdh5.repo --directory-prefi=/etc/yum.repos.d
  3. PS: 若要安装指定的版本, 修改如下参数
  4. sudo vim /etc/yum.repos.d/cloudera-cdh5.repo
  5. # 修改 baseurl 属性中的 url (url 可以指定版本)
  6. baseurl=https://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/5.9.0/
  7. yum update

1. 安装 Flume

  • 具体说明转 flume 文档
  1. sudo yum install flume-ng-agent

四、授权数据库服务

  1. -- hive
  2. CREATE DATABASE `hive` /*!40100 DEFAULT CHARACTER SET utf8 */;
  3. GRANT ALL PRIVILEGES ON hive.* TO 'hadoop'@'%' WITH GRANT OPTION;
  4. flush privileges;
  5. -- Hive 的元数据库是
  6. # 找到对应版本的, 复制 Hive 版本的 Sql 文件, 放在 MySQL 客户端执行即可, 出现问题解决问题, 直到全部创建完成即可
  7. $HIVE_HOME/scripts/metastore/upgrade/mysql/hive-schema-1.1.0.mysql.sql (与 Hive 版本相同)
  8. $HIVE_HOME/scripts/metastore/upgrade/mysql/upgrade-1.1.0-to-1.1.0-cdh5.12.0.mysql.sql (与 Hive 版本相同)
  9. # CDH
  10. datanucleus.autoCreateSchema=false
  11. datanucleus.metadata.validate=false
  12. hive.metastore.schema.verification=false
  13. # 启用直接 SQL
  14. hive.metastore.try.direct.sql=true
  15. -- hue
  16. CREATE DATABASE `hue` /*!40100 DEFAULT CHARACTER SET utf8 */;
  17. GRANT ALL PRIVILEGES ON hue.* TO 'hadoop'@'%' WITH GRANT OPTION;
  18. flush privileges;
  19. -- oozie
  20. CREATE DATABASE `oozie` /*!40100 DEFAULT CHARACTER SET utf8 */;
  21. GRANT ALL PRIVILEGES ON oozie.* TO 'hadoop'@'%' WITH GRANT OPTION;
  22. flush privileges;

五、重新安装,删除所有组件

  1. # 删除组件
  2. sudo yum remove cloudera-manager-daemons
  3. sudo yum remove cloudera-manager-server
  4. sudo yum remove cloudera-manager-server-db-2
  5. sudo yum remove cloudera-manager-agent
  6. # server
  7. sudo service cloudera-scm-server stop
  8. sudo rm -rf /var/lib/cloudera-manager-server
  9. sudo rm -rf /var/run/cloudera-manager-server
  10. # agent
  11. sudo service cloudera-scm-agent stop
  12. sudo rm -rf /var/lib/cloudera-scm-agent
  13. sudo rm -rf /var/run/cloudera-scm-agent
  14. sudo rm -rf /run/cloudera-scm-agent

* 常见问题

1. oozie 找不到 mysql-connector.jar

  1. mysql-connector.jar 复制到 /var/lib/oozie 中.
  2. cp /path/mysql-connector-java-5.1.40.jar /var/lib/oozie
  3. # 添加 Jar 到 hive
  4. sudo cp /usr/share/java/mysql-connector-java-5.1.40.jar /opt/cloudera/parcels/CDH/lib/hive/lib/mysql-connector-java-5.1.40.jar
  5. # 添加 Jar 到 Oozie
  6. sudo cp /usr/share/java/mysql-connector-java-5.1.40.jar /opt/cloudera/parcels/CDH/lib/oozie/lib/mysql-connector-java-5.1.40.jar
  7. sudo cp /usr/share/java/mysql-connector-java-5.1.40.jar /var/lib/oozie/