一、概述
CDH是Hadoop众多分支中的一种,由Cloudera维护,基于稳定版本的Apache Hadoop构建,全称Cloudera’s Distribution, including Apache Hadoop。
CDH提供了Hadoop的核心可扩展存储(HDFS)和分布式计算(MR),还提供了WEB页面进行管理、监控。
二、部署环境
ip地址 | 主机名 | 系统 |
192.168.12.43 | server1 | CentOS-7.3-x86_64-DVD-1611.iso |
192.168.12.45 | server1 | CentOS-7.3-x86_64-DVD-1611.iso |
192.168.12.46 | server1 | CentOS-7.3-x86_64-DVD-1611.iso |
三、软件版本
>>mysql数据库版本: 5.7
>>cm版本: cm 5.15.2
>>cdh版本: cdh 5.15.2
四、前期准备工作
1)关闭防火墙(3台)
systemctl stop firewalld
systemctl disable firewalld
2)关闭selinux(3台)
修改配置文件/etc/selinux/config(重启生效)
将selinux=enforcing 改为selinux=disabled
3)设置主机名(3台)
Hostnamectl set-hostname server1/server2/server3
vi /etc/sysconfig/network
HOSTNAME=server1
4)配置host文件(3台)
vi /etc/hosts 根据自己的ip 进行相应配置
配置完之后,可以在同一台机器上ping 不同的域名,查看是否有响应.表明配置成功
5)更新yum源(本地镜像源)
参考另一篇博客(由于是内网安装,搭建了本地的yum源,方便以后安装依赖)
6)安装JDK(3台)
7)配置免密登陆,保证主节点机器免密登录其他机器
cd ~
生成公钥和私钥
ssh-keygen -t rsa 一路回车就好
将公钥拷贝到要免密登录的目标机器上(在主节点执行)
ssh-copy-id server1
ssh-copy-id server2
ssh-copy-id server3
8)在主节点上安装mysql,配置相应的用户权限(也可以使用yum安装mysql)
参考另一篇博客
9)下载第三方依赖(3台)
yum -y install chkconfig python bind-utils psmisc libxslt zlib sqlite cyrus-sasl-plain cyrus-sasl-gssapi fuse fuse-libs redhat-lsb mod_ssl httpd nfs-utils rpcbind ntp
10) 时钟同步(详情见另一篇文档,ntp时间服务器配置)
开始安装
一、下载cm
cm下载地址:http://archive.cloudera.com/cm5/cm/5/
cdh下载地址:http://archive.cloudera.com/cdh5/parcels
二、上传
上传cloudera-manager-centos7-cm5.15.2_x86_64.tar.gz到/opt/software并解压
tar -zxvf /opt/software/cloudera-manager-centos7-cm5.15.2_x86_64.tar.gz -C /opt
三、配置cm agent
修改文件/opt/module/cloudera-manage/cm-5.12.2/etc/cloudera-scm-agent/ config.ini
vim /opt/cm-5.15.2/etc/cloudera-scm-agent/config.ini
server_host=server2(主节点hostname)
四、配置cm的数据库
1>拷贝mysql jar文件到目录 /usr/share/java/
mkdir /usr/share/java/
cp /opt/software/mysql-connector-java-5.1.27/mysql-connector-java-5.1.27-bin.jar /usr/share/java
mv mysql-connector-java-5.1.27-bin.jar mysql-connector-java.jar
• 注意jar包名称要修改为mysql-connector-java.jar
2>在mysql中创建cm库
/opt/cm-5.15.2/share/cmf/schema/scm_prepare_database.sh mysql scm –h主节点hostname -uroot -p000000 --scm-host 主节点hostname scm
注解:
会让输入scm密码,自己任意输入(自己记住,后面要用),保证密码有大小写,特殊字符(由于我之前关掉了密码复杂度的验证,简单的也没关系)
-u:database username
-p:database password
mysql:数据库用的是mysql,如果安装过程中用的oracle,那么该参数就应该改为oracle。
scm:表示在mysql数据库中创建scm database
-h:database host 表示安装数据库的主机名 (我是在server2上安装的mysql数据库,所以我指定了server2)
--scm-host cdh101 :cms的主机,一般是和mysql安装的主机是在同一个主机上。
执行完创建cm库的命令后,只有当看到all done, your scm database is configured correctly!这句话时,表明命令操作是成功的.
五、分发
分发cloudera-manage(在server2上执行命令,时间会稍长)
scp -r /opt 节点二:/opt
scp -r /opt 节点三:/opt
六、其他文件放入到相同目录下
cp CDH-5.15.2-1.cdh5.15.2.p0.3-el7.parcel manifest.json /opt/cloudera/parcel-repo/
mv CDH-5.15.2-1.cdh5.15.2.p0.3-el7.parcel.sha1 CDH-5.15.2-1.cdh5.15.2.p0.3-el7.parcel.sha 改名
cp CDH-5.15.2-1.cdh5.15.2.p0.3-el7.parcel.sha /opt/cloudera/parcel-repo/
七、 创建用户cloudera-scm(3台)
useradd --system --home=/opt/cm-5.15.2/run/cloudera-scm-server --no-create-home --shell=/bin/false --comment "cloudera scm user" cloudera-scm
--system 创建一个系统账户
--home 指定用户登入时的主目录,替换系统默认值/home/<用户名>
--no-create-home 不要创建用户的主目录
--shell 用户的登录 shell 名
--comment 用户的描述信息
八、启动和关闭cm server&agent 服务
服务节点:(主节点)
/opt/cm-5.15.2/etc/init.d/cloudera-scm-server start
工作节点:
/opt/cm-5.15.2/etc/init.d/cloudera-scm -agent start (三个节点同时执行)
注意:启动过程非常慢,manager 启动成功需要等待一段时间,过程中会在数据库中创建对应的表需要耗费一些时间。
一段时间过后,可以使用下列命令查看7180端口是否已经启动: netstat -anp | grep 7180 如果查看被占用则表示安装成功了!!!
[root@cdh101 init.d]# netstat -anp | grep 7180
tcp 0 0 0.0.0.0:7180 0.0.0.0:* listen 5498/java
九、访问
访问http://主节点:7180,(用户名、密码:admin)
这个地方注意,需要在windows的hosts文件中配置ip地址和域名
*如果只有出现一台的话,看下agent状态,如果没起来重新启动就好了
/opt/cm-5.15.2/etc/init.d/cloudera-scm -agent status
出现上述警告执行命令
sysctl vm.swappiness=10
在/etc/sysctl.conf加入该配置
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
在/etc/rc.local 加入配置
hive库和amon需要预先在mysql中创建
##amon
create database amon DEFAULT CHARACTER SET utf8;
grant all on amon.* TO 'amon'@'%' IDENTIFIED BY 'amon';
##hive
create database hive DEFAULT CHARACTER SET utf8;
grant all on hive.* TO 'hive'@'%' IDENTIFIED BY 'hive';
##oozie
create database oozie DEFAULT CHARACTER SET utf8;
grant all on oozie.* TO 'oozie'@'%' IDENTIFIED BY 'oozie';
启动hive遇到的一些问题
mysql驱动包的改成5.x的
将mysql的hive库修改编码
ALTER DATABASE hive CHARACTER SET latinl
FLUSH PRIVILEGES;
启动之后报错:org.apache.hadoop.hive.metastore.HiveMeta MetaException(message:Version infomation not found int metastore)
这个是hive中没有版本信息,是经常碰到的。因为首次使用hive,没有相应的版本信息。
.修改conf/hive-site.xml 中的 “hive.metastore.schema.verification” 值为 false 即可解决 MetaException(message:Version information not found in metastore. )”
当然,如果是cm中,修改通过截面修改一下hive.metastore.schema.verification,然后重启以下即可。
Caused by: javax.jdo.JDODataStoreException: Required table missing : "`VERSION`" in Catalog "" Schema "". DataNucleus requires this table to perform its persistence operations. Either your MetaData is incorrect, or you need to enable "datanucleus.autoCreateTables"
在启动hive的时候启动失败,通过日志,发现这个问题。查阅资料,发现修改配置文件中的datanucleus.autoCreateSchema 为true即可。这样会自动进行创建表操作。