安装目的
主要快速搭建大数据平台,方便部门内学习。上级要求直接使用CDH加快部署和方便开发环境的运维,所以由此教程。(安装三次后总结)
准备工作
硬件资源:
4台 8核 32G 虚拟机。
操作系统:
CentOS 6.5
安装包准备:
- jdk1.8_151(oracle官网下载)
- CM & CDH
CDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcel
CDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcel.sha1
manifest.json
cloudera-manager-el6-cm5.11.0_x86_64.tar.gz
(tips: CDH后缀el6代表CentOS6,其他版本请参照官网)
机器配置(以下操作请使用root用户)
- 修改主机名;
# vi /etc/sysconfig/network
修改内容
NETWORKING=yes
HOSTNAME=node1
改好后执行: service network restart生效
- 修改hosts;
# vi /etc/hosts
127.0.0.1 localhost
192.168.1.101 node1
192.168.1.102 node2
192.168.1.105 node3
192.168.1.104 node4
- 关闭SELinux;
# setenforce 0
# vi /etc/selinux/config
SELINUX=disabled
- 关闭防火墙;
# service iptables stop
# chkconfig iptables off
- 配置网络;
免密登陆
生成ssh公钥
# ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
# chmod 700 ~/.ssh
# chmod 600 ~/.ssh/authorized_keys
所有子节点追加公钥到主节点
(ps:下面命令只有主节点node1不用执行)
(子节点操作)
# cat ~/.ssh/id_dsa.pub | ssh root@node1 'cat >> ~/.ssh/authorized_keys'
检查主节点authorized_keys文件,公钥最后有节点主机名。
(主节点操作)
# vi ~/.ssh/authorized_keys
主节点发送authorized_keys文件到所有子节点
(主节点操作)
# scp ~/.ssh/authorized_keys root@node2:~/.ssh/
# scp ~/.ssh/authorized_keys root@node3:~/.ssh/
# scp ~/.ssh/authorized_keys root@node4:~/.ssh/
环境准备 (以下操作没有特殊说明都是在所有节点操作)
- 安装ntp,配置集群时钟同步
# yum install ntp
修改配置
# vi /etc/ntp.conf
## 主节点添加一下内容
restrict default ignore
server 127.127.1.0
fudge 127.127.1.0 stratum 10
## 子节点把所有server行注释掉,添加下面一行
server node1
更新机器当前时间:
ntpdate 202.120.2.101
可用的NTP
ntp.sjtu.edu.cn 202.120.2.101 (上海交通大学网络中心NTP服务器地址)
启动ntpd
# service ntpd start
查看状态命令,理论上要等几分钟才能时钟同步
# ntpstat
配置ntp自启动
chkconfig ntpd on
- 卸载open-JDK & 安装Oracle JDK
卸载OpenJDK
执行以下命令1, 出现的jdk包都用命令2卸载openjdk包
命令1:rpm -qa|grep openjdk
命令2 :rpm -e --nodeps 包名
卸载gcj编译器
# 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
卸载rpm版的jdk:
#rpm -qa|grep jdk
显示:jdk-1.6.0_10-fcs
卸载:#rpm -e --nodeps jdk-1.6.0_10-fcs
安装 Oracle JDK
执行以下命令使默认JDK链接安装的Oracle JDK
# mkdir /usr/java
# ln -s /opt/java/jdk/jdk1.8.0_151 /usr/java/default
修改环境变量
# vi /etc/profile
追加以下内容到文件末
# JAVA_HOME 必须是/usr/java/default,
# 否则启动Spark会提示找不到JAVA_HOME,
# 可能是部分启动脚本写死该目录。
export JAVA_HOME=/usr/java/default
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
- 安装mysql connector
(所有节点)
# yum install mysql-connector-java.noarch
- 准备scm用户
# useradd --system --home=/opt/cm-5.11.0/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
- 安装MySQL
5.1安装
# yum install mysql-server
# service mysqld start
# chkconfig mysqld on
5.2 配置密码
# mysqladmin -u root password 123456
5.3 准备数据库
# mysql -uroot -p123456
#hive
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
#activity monitor
create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
- 准备部署CM & CDH
6.1 解压CM压缩包到/opt 目录
# cd /opt
# tar -xzvf cloudera-manager-el6-cm5.11.0_x86_64.tar.gz
6.2 准备parcel包,
# cd /opt/cloudera/parcel-repo/
复制以下文件到该目录
CDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcel.sha1
CDH-5.11.0-1.cdh5.11.0.p0.34-el6.parcel
manifest.json
6.3 修改agent配置
# vi /opt/cm-5.11.0/etc/cloudera-scm-agent/config.ini
server_host=node1
6.4 拷贝agent到各datanode节点(node2-node4)
# scp -r /opt/cm-5.11.0 root@node2:/opt/
# scp -r /opt/cm-5.11.0 root@node3:/opt/
# scp -r /opt/cm-5.11.0 root@node4:/opt/
6.5 初始化CM数据库
# /opt/cm-5.11.0/share/cmf/schema/scm_prepare_database.sh mysql cm -hlocalhost -uroot -p123456 --scm-host localhost scm scm scm
7 启动CM
7.1 【主节点】server启动 & agent启动
# /opt/cm-5.11.0/etc/init.d/cloudera-scm-server start
# /opt/cm-5.11.0/etc/init.d/cloudera-scm-agent start
7.2 【子节点】agent启动
# /opt/cm-5.11.0/etc/init.d/cloudera-scm-agent start
7.3 在局域网内访问: http://192.168.1.101:7180/cmf/login, 如果你是windows可以修改hosts文件后用: http://node1:7180/cmf/login
默认帐号密码:admin
到这里就安装CM & CDH完成,剩下组件安装都是可视化安装内容,不详细描述。
卸载攻略:
http://blog.csdn.net/u011031430/article/details/72867745
其中,卸载后再装kafka会出现启动错误,原因是log.dirs目录内存在旧的数据,删除了就好了。一般在以下目录:
rm -rf /var/local/kafka/data/*
部分组件验证代码
1.验证spark
/opt/cloudera/parcels/CDH-5.11.0-1.cdh5.11.0.p0.34/lib/spark/bin/spark-submit
--class org.apache.spark.examples.JavaWordCount
--master spark://node1:7077
--num-executors 2
--driver-memory 512m
--executor-memory 512m
--executor-cores 1
/opt/cloudera/parcels/CDH-5.11.0-1.cdh5.11.0.p0.34/lib/spark/lib/spark-examples.jar /kv1.txt\
2.验证kafka
root账号
kafka-topics --zookeeper node1:2181,node2:2181,node3:2181 --topic TestTopic --replication-factor 1 --partitions 1 --create
kafka-console-producer --broker-list node1:9092,node2:9092,node3:9092,node4:9092 --topic TestTopic
kafka-console-consumer --zookeeper node1:2181,node2:2181,node3:2181,node4:2181 --topic TestTopic --from-beginning
3.验证hbase
hbase shell
create 'a2','f1','f2'
put 'a2', 'rowkey001','f1:col1','aaaa'
put 'a2', 'rowkey001','f1:col2','bbbb'
put 'a2', 'rowkey002','f1:col1','cccc'
put 'a2', 'rowkey002','f1:col2','dddd'
scan 'a2'
4.hive
su - hdfs
create table users(id int, name string);
load data local inpath '/usr/local/wonhigh/users.txt' into table users;
select name from users;
- CDH问题
重启之类/etc/里面的配置恢复原来的样子
Spark2 依赖包问题:每次重启服务,配置都会重新加载/etc下的配置信息,比如说spark2, /etc/spark2的内容会恢复默认值,自定义jar目录会被覆盖。
解决方法:
1). 在指定目录添加classpath.txt文件(例如:/etc/extra-lib/hbase/classpath.txt);
2). 在classpath.txt文件内添加需要引入的jar包绝对路径;
3). 修改Spark2在CM内的配置:
“spark2-conf/spark-env.sh 的 Spark 2 服务高级配置代码段(安全阀)”
“spark2-conf/spark-env.sh 的 Spark 2 客户端高级配置代码段(安全阀)”
在以上两个配置框内加入:
export SPARK_DIST_CLASSPATH="$SPARK_DIST_CLASSPATH:$(paste -sd: "/etc/extra-lib/hbase/classpath.txt")"
4). 重启Spark2.
5). 内容会加入到/etc/spark2/conf/spark-env.sh 文件内。