离线安装 Cloudera ( CDH 5.x )(转载)

要配置生产环境前,最好严格按照官方文档/说明配置环境。比如,官方说这个安装包用于RETHAT6, CENTOS6,那就要装到6的版本下,不然很容易出现各种各样的错。

配置这个CDH5我入了很多坑:

CDH暂不官方支持CentOS 7, 查到国外有人是安装成功了,但是会有各种小问题需要息解决. 如7带的是python2.7, 而CDH5还是用的2.6, 所以会有包缺失. 所以最终我还是把我的服务器重装回6.5了

==================准备安装==========================

1. 查看并下载最新的CDH版本: http://archive.cloudera.com/cdh5/parcels/latest/ ( 20150530时还是5.3.3的版本), 如果是CentOS6, 则下载带el6的.

  

需要下载的文件有三个, 对应的parcel, parcel.sha1, manifest.json

下载完.sha1后改后缀为.sha

2. 下载对应的CM版本: http://archive-primary.cloudera.com/cm5/cm/5/ (如上面看到是5.3.3, 则推荐下载对应的版本的CM版本)

  

3. 下载oracle java JDK, 我使用的是1.7

  http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.rpm

下载完后把这些文件全部上传到局域网内的FTP上 

4. 用记事本准备好会使用的配置, 命令, 可以把下面的内容全部copy下来备用:

hosts文件配置:

192.168.10.250 n1
192.168.10.212 n2
192.168.10.213 n3
192.168.10.214 n4
192.168.10.215 n5
192.168.10.216 n6
192.168.10.217 n7
192.168.10.218 n8
192.168.10.219 n9

我的机器就只有4台, 但hosts文件可多配几个, 以备以后添加时不需要每个机器去修改. 其中n1为namenode, 其于全作为datanode

==================环境设计     ====================

namenode: E5       24G     内存   服务器一台

datanode  :  i5/i7    8G/16G内存   PC      3台

全部安装最小化的CentOS 6.5

==================系统环境准备====================

步骤一, 配置所有节点( 包含 namenode和datanode)

以下操作全部使用root帐户

1. 修改网络配置(所有节点)

  1.1 修改hostname

    #vi /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=n1

    改好后执行: service network restart生效

  1.2 修改hosts文件

    #vi /etc/hosts

插入上面设计好的hosts文件(必须包含本机IP与主机名的映射)

复制代码
192.168.10.250 n1
192.168.10.212 n2
192.168.10.213 n3
192.168.10.214 n4
192.168.10.215 n5
192.168.10.216 n6
192.168.10.217 n7
192.168.10.218 n8
192.168.10.219 n9
复制代码

2. 安装wget工具到所有节点

  #yum install wget

3.JDK 卸载

rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64

rpm -e --nodeps java-1.7.0-openjdk-devel-1.7.0.45-2.4.3.3.el6.x86_64

rpm -e --nodeps java-1.6.0-openjdk-devel-1.6.0.0-1.66.1.13.0.el6.x86_64

rpm -e --nodeps java-1.6.0-openjdk-javadoc-1.6.0.0-1.66.1.13.0.el6.x86_64

rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64

rpm -e  --nodeps java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64

卸载默认的:
用root用户登陆到系统,打开一个终端输入
# rpm -qa|grep gcj
显示内容其中包含下面两行信息
# java-1.4.2-gcj-compat-1.4.2.0-27jpp
# java-1.4.2-gcj-compat-devel-l.4.2.0-27jpp
卸载
# rpm -e java-1.4.2-gcj-compat-devel-l.4.2.0-27jpp
# rpm -e java-1.4.2-gcj-compat-l.4.2.0-27jpp

卸载其他自己安装的JDK就直接用rpm -e <javaXXXXX>
   卸载rpm版的jdk:

   #rpm -qa|grep jdk

   显示:jdk-1.6.0_10-fcs
   卸载:#rpm -e  --nodeps  jdk-1.6.0_10-fcs

3.2Oracle/Sun JDK安装

  1. tar -xvf jdk*.tar.gz -C /usr/java/
  2. ln -s /usr/java/jdk* /usr/java/default
  3. 配置环境变量/etc/profile,增加一下两行

export JAVA_HOME=/usr/java/default

export PATH=$PATH:$JAVA_HOME/bin

4. 关闭防火墙和SELinux

  4.1 关闭防火墙

  #service iptables stop

  #chkconfig iptables off

  4.2 关闭SELinux

  #setenforce 0

  #vi /etc/selinux/config

SELINUX=disabled

5. 安装并配置ntp服务

  5.1 安装ntp服务(所有节点都安装)

  #yum install ntp

  5.2 配置ntp服务(除n1外的节点按下配置)

删除默认文件配置的server, 仅添加n1

  #vi /etc/ntp.conf

restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
#主节点的主机名或ip
server n1

  5.3 启动ntp服务

  #service ntpd start

  #chkconfig ntpd on

6. 安装 mysql connector

  #yum install mysql-connector-java.noarch

7. 准备好scm帐户

  #useradd --system --home=/opt/cm-5.3.3/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm

注意--home=/opt/cm-5.3.3要对应你安装的版本

步骤二, 配置namenode (n1)

1. SSH无密码登录(只需要主机可以无密码登录所有子节点就行了)

  1.1 在n1机器生成公钥文件

    #ssh-keygen -t rsa

一路回车直到生成密码成功, 如下图:

  1.2 把公钥添加到认证文件中

    #cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

  1.3 设置认证文件权限(极重要)

    #chmod 600 ~/.ssh/authorized_keys

  1.4 拷贝认证文件到所有datanode(n2,n3,n4)节点

    #scp ~/.ssh/authorized_keys root@n2:~/.ssh/

  1.5 测试是否可以无密码登录

    #ssh n2

如果没有提示密码, 直接登录了n2则说名配置成功了

2. 安装并配置 mysql

  2.1 安装 mysql

  #yum install mysql-server

  #service mysqld start

  #chkconfig mysqld on

  2.2 配置 mysql

  #mysqladmin -u root password '{psd}'

  2.3 准备数据库

  #mysql -uroot -p{psd}

#hive
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#activity monitor
create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

  授权数据库访问

grant all privileges on *.* to 'root'@'n1' identified by 'root' with grant option;
flush privileges;

3. 安装ntp服务

  3.1 如第一步骤中的安装方法安装ntp服务

  #yum install ntp

  3.2 配置ntp服务 

  #vi /etc/ntp.conf 

restrict default nomodify notrap

server 1.cn.pool.ntp.org prefer

server 127.127.1.0
fludge 127.127.1.0 stratum 10

我选的是1.cn.pool.ntp.org这个Server, 每个机房线路可能延迟不太一样, 各自找比较快的ntp的服务.

  3.3 启动ntp服务

  #service ntpd start

  #chkconfig ntpd on

注意: ntp同步一般需要等待5-10分钟, 可用ntpstat命令查看同状态

主节点查看应该如下是个外网地址:

其它节点查看应该是主节点IP:

 

==================准备部署            ====================

以下全在主节点用root帐户操作

1. 从内网FTP上下载CM5, 并解压到/opt

  #cd /opt

  #wget ftp://192.168.10.211/public/cloudera-manager-el6-cm5.3.3_x86_64.tar.gz

  #tar -xzvf cloudera-manager-el6-cm5.3.3_x86_64.tar.gz

2. 准备 Parcels

一定要安装到/opt/cloudera/parcel-repo中

  #cd /opt/cloudera/parcel-repo/

  #wget ftp://192.168.10.211/public/CDH-5.3.3-1.cdh5.3.3.p0.5-el6.parcel

  #wget ftp://192.168.10.211/public/CDH-5.3.3-1.cdh5.3.3.p0.5-el6.parcel.sha

  #wget ftp://192.168.10.211/public/manifest.json

3. 修改agent配置

  #vi /opt/cm-5.3.3/etc/cloudera-scm-agent/config.ini

server_host=n1

4. 拷贝agent到各datanode节点(n2-n4)

  #scp -r /opt/cm-5.3.3 root@n2:/opt/

5. 初始化数据库

  /opt/cm-5.3.3/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -p{psd} --scm-host localhost scm scm scm

 

==================部署           ====================  

1. 在namenode启动server和agent(主节点也是要做到集群中的, 所以主节点也要开启Agent)

  #/opt/cm-5.3.3/etc/init.d/cloudera-scm-server start

  #/opt/cm-5.3.3/etc/init.d/cloudera-scm-agent start

2. 在所有datanode启动agent

  #/opt/cm-5.3.3/etc/init.d/cloudera-scm-agent start

3. 在局域网内访问: http://192.168.10.250:7180/cmf/login, 如果你是windows可以修改hosts文件后用: http://n1:7180/cmf/login

默认帐号密码:admin

选择Free版本

4. 选择需要部署的机器

5. 选择安装包

6. 部署完成

7. 服务器检查

这里有个问题: Cloudera 建议将 /proc/sys/vm/swappiness 设置为 0, 当前设置为 60.  

  #echo 0 > /proc/sys/vm/swappiness 即可解决。

  7.2 JAVA JDK 版本不匹配( 最佳好像是75?), 问题不是很大

8. 选择安装服务

9. 后面基本一路配置下去直到结束

10. 可能出的错

  10.1 Hive还是Hue启动不起来, 提示ImportError: libxslt.so.1 ... 其实真正的错是缺少libxml2. 但是用yum install libxml2并不能解决的, 要用yum install libxml2-python

  10.2 Hue起不来还有一个可能是没有装libxslt, 请用yum install libxslt.x86_64

  10.3 HDFS或是别的经常会有启动错误. 不用一直停在那个安装服务界面. 你可以进入http://n1:7180/home, 点Hosts, 然后一个个把节点的role启动起来

    10.4 NFS 有可能启不起来, 查看日志显示:

No portmap or rpcbind service is running on this host. Please start portmap or rpcbind service before attempting to start the NFS Gateway role on this host.
    
    需要安装rpcbind: yum install rpcbind.x86_64
异常4:执行/opt/cm-5.1.3/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -pxxxx --scm-host localhost scm scm scm

出现异常:



butil.DbCommandExecutor /opt/cm-5.4.7/etc/cloudera-scm-server/db.properties com.cloudera.cmf.db.


log4j:ERROR Could not find value for key log4j.appender.A


log4j:ERROR Could not instantiate appender named "A".


错误原因:授权失败:


#授权root用户在主节点拥有所有数据库的访问权限


grant all privileges on *.* to 'root'@'n1' identified by 'xxxx' with grant option;


flush privileges;


 


 


异常5:/opt/cm-5.4.7/lib64/cmf/agent/build/env/bin/python: error while loading shared libraries: libpython2.4.so.1.0: cannot open shared object file: No such file or directory


异常6


 


临时解决办法:


 echo 0 > /proc/sys/vm/swappiness
echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag

长期解决办法:将配置文件写入/etc/rc.local


异常7:


 



执行:


cp /opt/cm-5.4.7/share/cmf/lib/mysql-connector-java-5.1.38-bin.jar /opt/cloudera/parcels/CDH-5.4.7-1.cdh5.4.7.p0.3/lib/hive/lib


不然在hive会找不到驱动报错。


错误8:


        at java.lang.reflect.Method.invoke(Method.java:606)


        at org.apache.hadoop.util.RunJar.run(RunJar.java:221)


        at org.apache.hadoop.util.RunJar.main(RunJar.java:136)


Caused by: java.sql.SQLException: Access denied for user 'root'@'node8' (using password: YES)


        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)


        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3878)


        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3814)


        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:871)


        at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4323)


        at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1267)


 


异常9:Command failed to run because service HDFS has invalid configuration. Review and correct its configuration. First error: Nameservice nameservice has no SecondaryNameNode or High-Availability partner

HDFS: Nameservice nameservice has no SecondaryNameNode or High-Availability partner

错误原因:集群HDFS在做HA失败。
解决办法:进入HDFS上将journalnodeFailoverController服务实例删除。重新配置HA即可


本文转自于:http://www.cnblogs.com/modestmt/p/4540818.html
posted @ 2015-12-17 12:45  zhanggl  阅读(9326)  评论(0编辑  收藏  举报