安装文件准备
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
Namenode
http://master:50070/dfshealth.jsp
Hue
Cloudera Manager
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>