1 所需安装包以及下载地址
1.1 操作系统
版本:CentOS 6.8
CDH Parcel文件下载地址
下载的文件CDH-5.7.2-1.cdh5.7.2.p0.18-el6.parcel.sha1,扩展名改为sha
注:其中el6表示系统版本6[对应centos6]
1.2 rpm文件
下载地址:
rpm文件
注:总共七个文件,jdk-6u31-linux-amd64.rpm可以不用下载
1.3 mysql-jdbc
注意:不要使用yum来安装mysql驱动,这样会默认加载了openjdk,会cdh不兼容openjdk
下载地址:mysql驱动
1.4 jdk
jdk-7u67-linux-x64.rpm[官网]
2 主机基础配置(使用root配置)
如果使用非root用户,需要配置
添加新用户设置用户密码,并设置该用户为免密码sudo权限
#adduser xxxx //添加一个名为xxxx的用户
#passwd xxxx //修改密码
修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
xxxxx ALL=(ALL) NOPASSWD: ALL
2.1 每台机器配置hosts
2.1.1 修改 hostname
sudo vi /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=master //修改HOSTNAME值
2.1.2 重启网络服务生效
service network restart
2.1.3 修改 ip 与主机名的对应关系(每一台机)
sudo vi /etc/hosts
2.2 ssh免密码登陆
2.2.1 生成密码对(所有节点)
ssh-keygen -t rsa
生成其无密码密钥对,一路回车键,生成的密钥对:id_rsa和id_rsa.pub,默认存储在~/.ssh"目录
2.2.2 让master能够免密登录其余节点
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys#把id_rsa.pub追加到授权的key里面去
chmod 644 ~/.ssh/authorized_keys#
scp ~/.ssh/ authorized_keys xxxx@hostnamexxx:~/.ssh#注:如若没有scp命令,安装yum install openssh-clients
如果希望可以每一个节点都可以免密码登录,也可以对其他节点重复此操作,但是不建议
检查下authorized_keys传到其他机器后的权限是否为644,不是则改为644,测试是否设置成功:在主节点上ssh hostname[1~3],若不需要密码就能直接登陆进去了表示配置成功。
ssh slave1
2.3 关闭防火墙(每一个节点)
sudo service iptables stop#临时关闭
sudo chkconfig iptables off#重启后生效
2.4 关闭SELINUX(每一个节点)
修改/etc/selinux/config 文件的 SELINUX=disabled #重启生效
查看 SELINUX 状态:
/usr/sbin/sestatus –v
#SELinux status: enabled( enabled:开启; disabled:关闭)
#========重启系统(如果已关闭可不用重启)============
2.5 安装jdk[每一个节点]
注意如果采取其他安装,建议java解压目录要在/usr/java,不然cloudera manager 容易找不到jdk
rpm -ivh jdk-7u67-linux-x64.rpm
进入/etc/profile,修改环境变量
export JAVA_HOME=/usr/java/default
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
2.6 配置ntp
master节点作为ntp服务器与外界对时中心同步时间,
随后对所有datanode节点提供时间同步服务,所有datanode节点以master节点为基础同步时间。
所有节点安装相关组件
sudo yum install ntp
所有节点配置开机启动
sudo chkconfig ntpd on
检查是否设置成功
sudo chkconfig --list ntpd #其中2-5为on状态就代表成功
2.6.1 主节点设置:
#sudo vi /etc/ntp.conf 进入文件
server 0.cn.pool.ntp.org perfer
server 1.asia.pool.ntp.org
server 3.asia.pool.ntp.org
server ntp.sjtu.edu.cn
2.6.2 slave节点设置:
#sudo vi /etc/ntp.conf 进入文件
server master
保存退出
sudo ntpdate -u 202.112.29.82
sudo ntpdate -u 202.120.2.101 #请先使用ntpdate手动同步一下时间[每个节点]
sudo service ntpd restart #配置完成后启动服务[每个节点]
sudo ntpdate -u master#slave节点以master节点为基础同步时间。
sudo ntpstat #查看同步效果
注:如果ntpstat状态未同步,可以等待5~10分钟再查看。
5到10分钟后
3.Cloudera Manager安装
安装文件:
cloudera-manager-agent-5.7.2-1.cm572.p0.17.el6.x86_64.rpm #主节点安装,slave安装(可选)
cloudera-manager-daemons-5.7.2-1.cm572.p0.17.el6.x86_64.rpm #主节点安装,slave安装(可选)
cloudera-manager-server-5.7.2-1.cm572.p0.17.el6.x86_64.rpm #主节点安装
cloudera-manager-server-db-2-5.7.2-1.cm572.p0.17.el6.x86_64.rpm #主节点安装,内置数据库,可选
enterprise-debuginfo-5.7.2-1.cm572.p0.17.el6.x86_64.rpm
3.1 master安装
在master 节点安装daemons、server、agent(先装daemons)
yum --nogpgcheck localinstall cloudera-manager-daemons-5.7.2-1.cm572.p0.17.el6.x86_64.rpm
yum --nogpgcheck localinstall cloudera-manager-server-5.7.2-1.cm572.p0.17.el6.x86_64.rpm
yum --nogpgcheck localinstall cloudera-manager-agent-5.7.2-1.cm572.p0.17.el6.x86_64.rpm#注:agent安装需要联网
3.2 slave安装
在节点安装daemons、agent(先装daemons)
yum --nogpgcheck localinstall cloudera-manager-daemons-5.7.2-1.cm572.p0.17.el6.x86_64.rpm
yum --nogpgcheck localinstall cloudera-manager-agent-5.7.2-1.cm572.p0.17.el6.x86_64.rpm#注:agent安装需要联网
3.3 配置主节点以及其他节点agent的config.ini文件
在每个 Cloudera Manager Agent 主机上,通过在
/etc/cloudera-scm-agent/config.ini 配置文件中设置以下属性,
配置 Cloudera Manager Agent 以指向 Cloudera Manager Server
#sudo vi /etc/cloudera-scm-agent/config.ini 进入文件
server_host=master
4 Master安装mysql 并配置权限等。
需要配置数据库,此教程选用最常用的mysql,其中oozie服务包括工作流的信息,可能导致数据会增加很多
安装mysql并检查服务
yum install mysql-server mysql mysql-deve #注:需要联网
chkconfig mysqld on
service mysqld start
进入mysq密码配置
mysql –u root
use mysql
update user set password=password('hadoop') where user='root';
update user set password=password('hadoop') where host='localhost';
update user set password=password('hadoop') where host='master';
重启服务
service mysqld restart
配置数据库权限
mysql -u root -phadoop
create database cloudera
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
flush privileges;
5 在master节点配置cloudera manager 数据库并启动cm的server及agent程序
master操作步骤
- 拷贝mysql-connector-java-3.1.14-bin.jar 到 /usr/share/java 下并重命名mysql-connector-java.jar
- 运行
/usr/share/cmf/schema/scm_prepare_database.sh -h master mysql cloudera root hadoop
- 启动cm server
service cloudera-scm-server start
- 添加cm server服务
chkconfig cloudera-scm-server on
- 启动cm agent
sudo service cloudera-scm-agent start
- 添加cm agent服务
chkconfig cloudera-scm-agent on
slave节点上重复其中两步
- 启动cm agent
sudo service cloudera-scm-agent start
- 添加cm agent服务
chkconfig cloudera-scm-agent on
6 CDH5 安装[这一步所需时间较长]
sudo service httpd start #在master启动http,能够后面找到对应的parcel包
将下载的parcel文件及官方网站上获取对应版本的 sha 文件和 manifest.json文件上传至/opt/cloudera/parcel-repo目录下。
启动浏览器,开始集群web安装配置
Master:7180 => 192.168.75.141:7180 账号:admin 密码admin
cdhparcel包已经放到对应的库, 不需要下载,其他的服务下载速度较慢,如果时间不那么充足可以日后再下载和添加服务
#针对第一个警告
echo 'vm.swappiness=10'>> /etc/sysctl.conf
#针对第二个警告
echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
echo 'echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag' >> /etc/rc.local
选择所有服务
角色分配,此处使用默认
#需要预先建立测试数据库,重新运行
create database hive character set utf8;
create database oozie character set utf8;
因为虚拟机内存和空间不够,导致一些警告某些监控无法完全安装成功。
此外,启动所有服务那一步安装时间非常长,耐心等待。
7 测试组件
7.1 验证MR程序
# 添加用户和组
groupadd cdh-dev
useradd -g cdh-dev cdh-dev
lid cdh-dev
# hadoop创建相应的用户
sudo -u hdfs hdfs dfs -mkdir /user/cdh-dev
sudo -u hdfs hdfs dfs -chown cdh-dev:cdh-dev /user/cdh-dev
# 运行wordcount程序
su - cdh-dev
echo "Hello world Bye world" > file0
echo "Hello hadoop Goodbye hadoop" > file1
hdfs dfs -mkdir -p /user/cdh-dev/wordcount/input
hdfs dfs -put file* /user/cdh-dev/wordcount/input
hadoop jar /opt/cloudera/parcels/CDH/jars/hadoop-examples.jar wordcount wordcount/input wordcount/output
hdfs dfs -getmerge wordcount/output output.txt
cat output.txt
7.2 验证hive
su - cdh-dev
echo "Alex, Cloudera" > hive-data
echo "fd, jinz" >> hive-data
hdfs dfs -mkdir -p hive/table-data-files
hdfs dfs -put hive-data hive/table-data-files
vi hive-data.sql
create external table test(
name string,
company string
)
row format delimited
fields terminated by ','
stored as textfile
location '/user/cdh-dev/hive/table-data-files'
hive -f hive-data.sql
hive -e "select * from test"
7.3 验证HBase
create 'record', {NAME => 'user'}
put 'record', 'Alex', 'user:company', 'Cloudera'
get 'record', 'Alex'
# 用vi创建文件 hbase_on_hive.hql
create external table hbase_on_hive(
name string,
company string
)
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
with serdeproperties ( "hbase.columns.mapping" = ":key, user:company" )
tblproperties ( "hbase.table.name" = "record" );
hive -f hbase_on_hive.hql
hive -e "select * from hbase_on_hive"
附录监控界面
192.168.75.141 - master
- 整体监控界面:http://192.168.75.141:7180
- 集群任务管理监控界面:http://192.168.75.141:8088
- hive监控界面:http://192.168.75.141:10002/
- spark监控界面:http://192.168.75.141:18088/
- hue使用界面:http://192.168.75.141:8888
- hdfs监控界面:http://192.168.75.141:50070