cdh 安装记录

时间:2024-05-14 11:34:32

安装文件准备

CDH

下载地址:http://archive.cloudera.com/cdh5/parcels/latest/

下载操作系统对应的版本:

1.CDH-5.3.0-1.cdh5.3.0.p0.30-e17.parcel

2.CDH-5.3.0-1.cdh5.3.0.p0.30-e17.parcel.sha1

3.Manifest.json

Cloudera Manager

下载地址:http://archive-primary.cloudera.com/cm5/cm/5/

下载操作系统对应的版本:

1.cloudera-manager-e17-cm5.3.0_x86_64.tar.gz

JDK

下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

CDH支持Java 8,若可以请选择Java 8版本或Java 7最新版:

1.jdk-7u71-linux-x64.rpm

Mysql

下载地址:http://dev.mysql.com/downloads/connector/j/

需要登录才可下载:

1.mysql-connector-java-5.1.34-bin.jar

系统环境准备

若无特殊需求将CDH安装在root用户下最佳。

所有配置完成后需重启集群所有机器。

配置Hosts

登录集群所有机器

执行命令:

Vi /etc/hostname

把机器名写入

master

vi /etc/hosts

将集群角色和IP写入,类似

192.168.60.3 master

127.0.0.1 master  localhost

192.168.60.4 slave01

192.168.60.5 slave02

备注:

若出现域名/通信方面的错误可将127.0.0.1该行注释掉

打通SSH

登录Master机器

执行命令:

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

chmod 600 $_

将authorized_keys scp到所有Slave节点上:

scp ~/.ssh/authorized_keys hadoop@slaves:~/.ssh/

备注:

若无法免密码登录,需登录至Slave节点并执行命令:

chmod 600 ~/.ssh/authorized_keys

chmod 700 ~/.ssh

关闭IPv6

登录集群所有机器

执行命令:

cat << EOF >> /etc/sysctl.conf

net.ipv6.conf.all.disable_ipv6 =1

net.ipv6.conf.default.disable_ipv6 =1

EOF

sysctl -p

使用lsmod查看ipv6的模块是否被加载

关闭SELINUX

登录集群所有机器

执行命令:

sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config

查看SELinux状态:

1、/usr/sbin/sestatus -v      ##如果SELinux status参数为enabled即为开启状态

SELinux status:                 enabled

关闭防火墙

登录集群所有机器

执行命令:

systemctl stop firewalld.service

systemctl disable firewalld.service

查看 iptables -L

打开句柄限制

登录集群所有机器

执行命令:

vi /etc/security/limits.conf

根据当前用户名,添加

cat << EOF >> /etc/security/limits.conf

root   soft    nproc   102400

root   hard    nproc   163840

root   soft    nofile  102400

root   hard    nofile  655360

root   soft    stack   102400

EOF

执行命令:

cat << EOF >> /etc/pam.d/login

session required pam_limits.so

EOF

安装JDK

登录集群所有机器

查看是否自带OpenJDK:

rpm -qa | grep java

卸载再带的JDK:

rpm -e --nodeps 包名

安装JDK:

rpm -i jdk-7u71-linux-x64.rpm

安装 必备软件

yum -y install psmisc

yum -y install libxslt

yum -y install screen

yum -y install telnet

安装Mysql

登录Master机器

若可以联网,执行命令:

yum install mysql-server

若无法联网,google如何安装(^_^)

添加为自启动:

chkconfig mysqld on

启动mysql:

service mysqld start

修改root密码:

mysqladmin -u root password '123456'

进入mysql:

mysql -uroot -p123456

创建数据库:

create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

create database ooz DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

create database hue default charset utf8 collate utf8_general_ci;

授权:

grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;

flush privileges;

NTP时间同步

master机器:

cat << EOF > /etc/ntp.conf

driftfile /var/lib/ntp/drift

restrict 127.0.0.1

restrict -6 ::1

restrict default nomodify notrap

server 127.127.1.0 prefer

includefile /etc/ntp/crypto/pw

keys /etc/ntp/keys

EOF

slave机器:

cat << EOF > /etc/ntp.conf

driftfile /var/lib/ntp/drift

restrict 127.0.0.1

restrict -6 ::1

restrict default kod nomodify notrap nopeer noquery

restrict -6 default kod nomodify notrap nopeer noquery

server master

include file /etc/ntp/crypto/pw

keys /etc/ntp/keys

EOF

启动NTP服务:

systemctl enable ntpd.service

systemctl restart ntpd.service

登录所有Slave机器

执行命令:

ntpdate master

/sbin/hwclock –w

systemctl enable ntpd.service

systemctl restart ntpd.service

查看命令:

ntpq –p

cloudera manager 调优

sysctl -w vm.swappiness=1

echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag

cat << EOF >> /etc/rc.local

echo 'never' >  /sys/kernel/mm/transparent_hugepage/defrag

EOF

Cloudera Manager安装

创建cloudera-scm用户

登录集群所有机器

执行命令:

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

安装Cloudera Manager

登录Master机器

将cloudera-manager-e17-cm5.3.0_x86_64.tar.gz文件加压至/opt下,产生2个文件夹cloudera和cm-5.3.0。

添加mysql connector包

登录Master机器

将mysql-connector-java-5.1.34-bin.jar拷贝至/opt/cm-5.3.0/share/cmf/lib/

初始化CM5的数据库数据库

登录Master机器

执行命令:

/opt/cm-5.3.0/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -p123456 --scm-host localhost scm scm

修改Agent配置

登录Master机器

执行命令:

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

将server_host的值改成Master机器的名称

同步Agent到其他节点

登录Master机器

执行命令:

scp -r /opt/cm-5.3.0 root@slave[1-xx]:/opt/

准备Parcels

登录Master机器

将CDH-5.3.0-1.cdh5.3.0.p0.30-e17.parcel、CDH-5.3.0-1.cdh5.3.0.p0.30-e17.parcel.sha1和Manifest.json三个文件拷贝至/opt/cloudera/parcel-repo/文件夹下。

并将CDH-5.3.0-1.cdh5.3.0.p0.30-e17.parcel.sha1重命名为CDH-5.3.0-1.cdh5.3.0.p0.30-e17.parcel.sha。

启动Cloudera Manager

启动Cloudera Manager后等待1-3分钟,然后访问http://主节点IP:7180,若可以访问则表示安装成功。

登录Master机器

执行命令:

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

登录集群所有机器

执行命令:

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

CDH安装

第一步

用户名密码皆为admin。

第二步

勾选上需要安装的主机。

第三步

可以看到所下载并安装的CDH版本表示前面部署成功,否则需要在线下载。

第四步

前面配置无误则无须下载,否则表示前面配置有误。

分发可能需要一段时间,视集群大小而定(此时集群一定要保证Master可以免密码登录到其它机器上)。

第五步

检查集群的状况,可根据提示信息修改配置并重新检查。

第六步

选择需要安装的组件,可自定义安装。

第七步

给集群各个节点分配角色,目前所知道需要注意的地方是HBase Thrift Server不要为空,否则Hue无法访问HBase。

第八步

设置mysql连接。

第九步

后面的一路“继续”下去即可。安装所需时间较长,请耐心等待。

常用工具地址

Jobtracker

http://master:8088/cluster

Namenode

http://master:50070/dfshealth.jsp

Hue

http://master:8888/

Cloudera Manager

http://master:7180/

HBase

http://master:60010/master-status/

一些常见问题

1. 运行Hadoop程序报错:org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x

——修改dfs.permissions为false,如下图所示。

2. 访问Cloudera Manager出现“无法发出查询:对 Service Monitor 的请求超时”。

——一般是没有问题的,可能服务器较卡导致的,多刷新几次即可。

3. hive创建表出问题

把mysql-connector-java-5.1.34-bin.jar 拷到/opt/cloudera/parcels/CDH-5.3.6-1.cdh5.3.6.p0.11/lib/hive/lib

4. oozie创建表出问题

把mysql-connector-java-5.1.34-bin.jar 拷到/opt/cloudera/parcels/CDH-5.3.6-1.cdh5.3.6.p0.11/lib/oozie/lib和

/var/lib/oozie/下

5. 遇到 /opt/cm-5.4.3/etc/init.d/cloudera-scm-agent启动不了

可以 ps -ef | grep agent看看,把启动的agent服务关了

6. 遇到 /opt/cm-5.4.3/etc/init.d/cloudera-scm-server启动不了

可以 ps -ef | grep server看看,把启动的server服务关了

7. yarn启动出问题,可能是cm自身的bug,按照以下方法试试

解决方法为修改/opt/cm-5.3.0/lib64/cmf/agent/src/cmf/util.py文件。将其中的代码:

1

2

pipe = subprocess.Popen(['/bin/bash', '-c', ". %s; %s; env" % (path, command)],

stdout=subprocess.PIPE, env=caller_env)

修改为:

1

2

pipe = subprocess.Popen(['/bin/bash', '-c', ". %s; %s; env | grep -v { | grep -v }" % (path, command)],

stdout=subprocess.PIPE, env=caller_env)

然后重启所有Agent即可。

8. 若要删除cm目录,而删除不了,可以用一下方法

df -h 查看cm后台进程,用umount 进程名  ,删除再试试

9. 若出现数据库连接出问题

1)可以看看是否创建了相应的数据库

2)可能是master主机下的root用户在mysql数据库的密码为空

登陆mysql,use mysql;

update User set password=‘xxxx’where hostname=‘master’and user=‘root’;

commit;

flush privileges;

10、注意master要免密码登录自己

11、8888,50070,8088等端口无法访问

现象:master机器通过wget可以正确的得到页面,但是外网却无法获取,而且网络的设置是正确的。

查看端口占用发现这些端口全部绑定在内网IP上而不是0.0.0.0。

解决方法:去各自的配置文件中配置即可,选择绑定至0.0.0.0端口,然后重启即可。

12、oozie服务启动失败

通常是第二次尝试安装中才会遇到,报错内容大概是数据库已存在。

解决方法:删除/var/lib/oozie/data文件夹即可。

13、HUE服务启动失败

报错信息是找不到libxslt.so.1。

解决方法:yum install libxslt即可。

14、如果hadoop fs -mkdir /user/mmm时出错,是由于权限问题引起的,可以通过cm端找到hdfs服务修改   相应配置

15、Phoenix

http://archive-primary.cloudera.com/cloudera-labs/

1)phoenix和spark整合:

spark-conf/spark-env.sh中配置

SPARK_DIST_CLASSPATH="$SPARK_DIST_CLASSPATH:/opt/cloudera/parcels/CLABS_PHOENIX-4.7.0-1.clabs_phoenix1.3.0.p0.000/lib/phoenix/phoenix-4.7.0-clabs-phoenix1.3.0-client.jar"

export SPARK_YARN_USER_ENV="CLASSPATH=$HADOOP_CONF_DIR"

2)phoenix 二级索引需要的配置

<property><name>hbase.regionserver.wal.codec</name><value>org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec</value></property>

3)phoenix 4.8 中使用 schema 和 Namespace 对应的配置

<property><name>phoenix.schema.isNamespaceMappingEnabled</name><value>true</value></property>

What is namespace and benefits of mapping table to namespace?

A namespace is a logical grouping of tables analogous to a database in relation database systems. This abstraction lays the groundwork for upcoming multi-tenancy related features:

    • Quota Management - Restrict the amount of resources (i.e. regions, tables) a namespace can consume.
    • Namespace Security Administration - Provide another level of security administration for tenants.
    • Region server groups - A namespace/table can be pinned onto a subset of RegionServers thus guaranteeing a course level of isolation.

注意:cloudera manager 目前phoenix最新版本是4.7(不支持此功能)

http://blog.cloudera.com/blog/2015/11/new-apache-phoenix-4-5-2-package-from-cloudera-labs/

16、用Apache的spark调用 cdh的yarnHA会出问题,去掉HA配置就会好了,问题是:

java.lang.IllegalArgumentException: Invalid ContainerId: container_e02_1483668670771_0005_02_000001

17、应用 spark的HiveContext 时,如果没有配置Hive服务以及和spark的依赖关系,则 HiveContext 会用derby 数据库,造成不能同时有两个应用运行。通过配置以MySQL为元数据库的Hive后,此问题不复存在。

具体问题见下:

Caused by: ERROR XSDB6: Another instance ofDerbymay have already booted the database ~~~~

18、为了能让 nodemanager机器上也能启动yarn任务,需在yarn-site.xml 中配置

 <property><name>yarn.resourcemanager.address</name><value>XXX:8032</value></property>
<property><name>yarn.resourcemanager.scheduler.address</name><value>XXX:8030</value></property>
<property><name>yarn.resourcemanager.resource-tracker.address</name><value>XXX:8031</value></property>
<property><name>yarn.resourcemanager.hostname</name><value>XXX</value></property>
<property><name>yarn.resourcemanager.admin.address</name><value>XXX:8033</value></property>