CDH (Cloudera's Distribution, including Apache Hadoop),是Hadoop众多分支中的一种,由Cloudera维护,基于稳定版本的Apache Hadoop构建,并集成了很多补丁,可直接用于生产环境。
ClouderaManager(本文以下简称为CM)则是为了便于在集群中进行Hadoop等大数据处理相关的服务安装和监控管理的组件,对集群中主机、Hadoop、Hive、Spark等服务的安装配置管理做了极大简化.
Cloudera Manager5安装遇到很多的问题,安装ClouderaManager如果不注意,会成为一部血泪史。为了避免多次、重复安装不成功,所以你需要具备以下条件。
1. 内存要足够大,主机必须至少有10 GB的RAM;
2. 必须具有root或无密码sudo访问主机;
3. 如果使用root,则主机必须接受相同的root密码;
4. 主机必须具有Internet访问权限才能使向导从中安装软件 archive.cloudera.com;
5. 运行支持的操作系统:
CM下载地址:http://archive.cloudera.com/cm5/cm/5/
CDH下载地址:http://archive.cloudera.com/cdh5/parcels/5.11/
建议:以下所有操作均在root下完成,否侧,出现错误,10个有9个都是目录权限问题,根据log查错即可。
(1)进入到我的home目录
cd ~/.ssh
(2)生成公钥和私钥:
ssh-keygen -t rsa
然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
将公钥拷贝到要免密登录的目标机器上(别忘了copy给本机一份)
ssh-copy-id dt013190
ssh-copy-id dt013191
...
ssh-copy-id dt013199
最后通过ssh ip 命令可以登录到其他服务节点及视为成功。(提示:退出使用 exit 命令)
首先卸载自带的OpenJdk,有些linux会默认自带较低版本的jdk如Centos。
使用命令rpm -qa | grep java查询java相关的包,命令rpm -e --nodeps包名并卸载它们,如果什么都没有则没有默认安装的jdk,直接进行下一步即可。
去Oracle的官网下载jdk的rpm安装包,并使用rpm -ivh 包名安装之。
这里不建议使用最新版本的jdk,因为oracle官网更新的jdk版本要高于CDH官方推荐的最高版本,会出现兼容性警告。
在所有的节点上执行,因为涉及到的端口太多,临时关闭防火墙是为了安装起来更方便。安装完毕后可以根据需要设置防火墙策略,保证集群安全。
关闭防火墙(重启生效)(所有节点)
关闭SELinux(重启生效)(所有节点)
(SELinux主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则))
vi /etc/selinux/config
SELINUX=disabled
出现disable即为成功
vi /etc/hosts
Mysql已经安装,
--hive数据库
create database hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci ;
--集群监控数据库
create database reoprt DEFAULT CHARSET utf8 COLLATE utf8_general_ci ;
--hue数据库
create database hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
-- oozie数据库
create database oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
创建cloudera-scm用户(每个节点都要创建)
useradd --system --home-dir /opt/cm-5.12.1/run/cloudera-scm-server/ --no-create-home --shell=/bin/false --comment "Cloudera SCM User" cloudera-scm
安装Cloudera Manager Server
首先需要安装Python,CentOS7默认安装了Python2.7
主节点解压安装cloudera-manager-centos7-cm5.12.1_x86_64.tar.gz到/opt文件夹
tar -xvf cloudera-manager-centos7-cm5.12.1_x86_64.tar.gz -C /opt
将MySQL驱动复制到/opt/cm-5.12.1/share/cmf/lib中
配置MySQL的远程访问权限
grant all privileges on *.* to 'root'@'%' identified by 'root';
flush privileges;
1
初始化CM的元数据库
/opt/cm-5.12.1/share/cmf/schema/scm_prepare_database.sh mysql cm -uroot -proot -h127.0.0.1(或者远程数据库的地址) --scm-host cdh1 scm scm scm
mysql指定数据库类型,cm为元数据库名,-u为数据库用户名,-p为数据库密码,-h为数据库地址,–scm-host 为cm主节点地址,最后三个scm不用理会,是从官网直接上copy过来的
执行完毕后如果报Access denied,检查一下是否启用了global id,如果启用了,禁用即可。原因在于上述脚本执行语句时在建表过程中会执行select命令,而启用了global id的情况下不允许这种操作。
建库成功后会发现MySQL的用户表里多出一个名为scm的用户,host为CM主节点的host,执行
use mysql;
update user set host='%' where User='scm';
grant all privileges on *.* to 'scm'@'%';
flush privileges;
安装Cloudera Manager Agent
修改/opt/cm-5.12.1/etc/cloudera-scm-agent/config.ini中的server_host为主节点的主机名。
将主节点的/opt/cm-5.12.1同步到其它节点
scp /opt/cm-5.12.1 root@cdh2:/opt
将Parcel包放到主节点的/opt/cloudera/parcel-repo/目录中(如没有parcel-repo,需要手动创建)
cp CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel /opt/cloudera/parcel-repo/
cp CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha1 /opt/cloudera/parcel-repo/CDH-5.12.1-1.cdh5.12.1.p0.3-el7.parcel.sha
cp manifest.json /opt/cloudera/parcel-repo/
启动Cloudera Manager Server
创建以下三个文件夹
mkdir -p /var/lib/cloudera-scm-server
mkdir -p /var/lib/cloudera-scm-agent
mkdir -p /var/lib/cloudera-scm-server-db/data
/opt/cm-5.12.1/etc/init.d/cloudera-scm-server start #启动成功后等5分钟左右查看进程会出现7180端口
启动Cloudera Manager Agent
所有节点通过/opt/cm-5.12.1/etc/init.d/cloudera-scm-agent start启动Agent服务。 (所有节点都要启动Agent服务,包括主节点)
查看进程出现9000等端口代表启动成功
在浏览器访问http://IP:7180输入账号密码(初始均为admin)出现如下界面:
点继续,然后根据自己的需要来配置相关项,
启动成功后的界面:
两台服务器之间免密登陆IP1能连到IP2,但是从IP2连不到IP1
解决办法:ssh免密登陆重新配置,使得IP2可免密登陆IP1
解决方法:
在/usr/lib64/mysql中加入libmysqlclient.so.18 改成libmysqlclient.so.18.0.0
然后 ln -sf libmysqlclient.so.18 libmysqlclient.so.18.0.0
然后
vi /etc/ld.so.conf
后面增加一条记录:
/usr/lib64/mysql (libmysqlclient_r.so.18 和libmysqlclient.so.18.0.0所在目录)
保存后执行命令使之生效:ldconfig
重新启动服务