哈喽大家好呀,仅经过了一段时间大数据相关的博文又和大家见面了,笔者之前有写过一套Hadoop大数据相关的博客,为什么今天又要开坑呢?当然是有原因,随着不断的学习了解,慢慢意识到之前做法存在很多缺陷,最终对比了比较成熟的解决方案EMR和CDH,最终选择了使用CDH来搭建大数据管理平台,那么我们就开始新的一趴,企业级大数据管理平台CDH的学习吧!
附上:
喵了个咪的博客:w-blog.cn
cloudera官网: https://www.cloudera.com/
官方文档地址: https://www.cloudera.com/documentation/enterprise/latest.html
一 , CDN介绍和解决的问题
CDH是由cloudera进行开发的大数据一站式平台管理解决方案,基于Hadoop生态的第三方发行版本,这样的描述相信大家还是挺难理解的,我们一起来梳理下CDH带来的改观.
作坊和工厂有什么区别? 一个是做出来东西就好了,一个是精细化流水线生产
用这个来对比自建Hadoop和CDH再好不过,要理解其中的区别我们需要先对CDH有个基础的认知,先从了解CDH解决了常见的什么问题
组件兼容
- 复杂的生态环境。在Hadoop生态圈中,组件的选择、使用,比如Hive,Mahout,Sqoop,Flume,Spark,Oozie等等,需要大量考虑兼容性的问题,版本是否兼容,组件是否有冲突,编译是否能通过等。经常会浪费大量的时间去编译组件,解决版本冲突问题。
- CDH每个版本都会有兼容认证都是经过严格的测试之后公布的,理论上来说只要统一CDH版本就不会出现兼容问题
稳定安全
- 不同的版本会有不同的漏洞很容易被被利用,又不敢轻易更新
- 版本更新快。通常情况,比如CDH每个季度会有一个update,每一年会有一个release。基于稳定版本Apache Hadoop,并应用了最新Bug修复或Feature的patch
安装配置管理
- 复杂的集群部署、安装、配置。通常按照集群需要编写大量的配置文件,分发到每一台节点上,容易出错,效率低下,还需要大量的查阅资料文档。
- 统一的网页进行安装配置,非常详细的文档以及配置的分类注解以及推荐配置(基本都已经是最优配置)
资源监控管理运维
- 复杂的集群运维。对集群的监控,运维,需要安装第三方的其他软件,如ganglia,nagois等,运维难度较大。
- 运维简单。提供了管理、监控、诊断、配置修改的工具,管理配置方便,定位问题快速、准确,使运维工作简单,有效。
企业服务
- 只能求助社区的帮助,响应差,解决问题需要碰运气.
- 代码基于Apache协议,100%开源。同时提供企业付费服务一对一支持,作为保障的后盾
PS: 使用CDH部署集群不能代替对各个组件进行单独的学习了解的工作,非常推荐大家从单个组件安装部署开始最后在统一使用CDH部署
二 , 准备工作
环境准备
- CentOS 7.4 64位
- JDK 1.8
- Cloudera Manager 5.15.0
需要准备一台cm服务器 两台master服务器 使用三台节点服务器
服务器最低要求 4核心8G
所有节点修改hostname
代码语言:javascript复制> hostnamectl --static set-hostname cm
> hostnamectl --static set-hostname master-1
> hostnamectl --static set-hostname master-2
> hostnamectl --static set-hostname slave-1
> hostnamectl --static set-hostname slave-2
> hostnamectl --static set-hostname slave-3
修改节点的hosts可以直接通过主机名进行访问
代码语言:javascript复制> vim /etc/hosts
# 修改为大家自己服务器的IP地址
192.168.3.10 cm
192.168.3.21 master-1
192.168.3.22 master-2
192.168.3.31 slave-1
192.168.3.32 slave-2
192.168.3.33 slave-3
依赖文件安装包准备
代码语言:javascript复制> mkdir -p /app/install
> cd /app/install
代码语言:javascript复制> wget http://archive.cloudera.com/cm5/cm/5/cloudera-manager-centos7-cm5.15.0_x86_64.tar.gz
> wget http://archive.cloudera.com/cdh5/parcels/5.15.0/CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel
> wget http://archive.cloudera.com/cdh5/parcels/5.15.0/CDH-5.15.0-1.cdh5.15.0.p0.21-el7.parcel.sha1
> wget http://pic.w-blog.cn/mysql-connector-java.jar
JDK1.8需要自行下载 jdk-8u101-linux-x64.tar.gz
最终我们可以看到有如下文件:
下载慢可选多线程下载工具 axel
代码语言:javascript复制cd /app/install
wget http://www.ha97.com/code/axel-2.4.tar.gz
tar zxvf axel-2.4.tar.gz
cd axel-2.4
./configure
make
make install
cd ..
所有节点关闭防火墙和selinux
关闭防火墙:
代码语言:javascript复制systemctl stop firewalld.service
systemctl disable firewalld.service
firewall-cmd --state
关闭selinux:
代码语言:javascript复制vim /etc/selinux/config
找到SELINUX改为:
SELINUX=disabled
所有节点ssh免密码登录
先在cm 上执行:
代码语言:javascript复制ssh-keygen -t rsa #一路回车到完成
ssh-copy-id -i ~/.ssh/id_rsa.pub root@cm #将公钥拷贝到本机的authorized_keys上
再在其他节点分别执行以下命令:
注意此处不变,将公钥拷贝到cm的authorized_k
代码语言:javascript复制ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub root@cm
在CM上,将authorized_keys分发到其他节点服务器:
代码语言:javascript复制scp ~/.ssh/authorized_keys root@master-1:~/.ssh/
scp ~/.ssh/authorized_keys root@master-2:~/.ssh/
scp ~/.ssh/authorized_keys root@slave-1:~/.ssh/
scp ~/.ssh/authorized_keys root@slave-2:~/.ssh/
scp ~/.ssh/authorized_keys root@slave-3:~/.ssh/