一 , 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

> 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可以直接通过主机名进行访问

> 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
复制代码

依赖文件安装包准备

> mkdir -p  /app/install
> cd /app/install
复制代码
> 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

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

关闭防火墙:

systemctl stop firewalld.service
systemctl disable firewalld.service
firewall-cmd --state
复制代码

关闭selinux:

vim /etc/selinux/config

找到SELINUX改为:
SELINUX=disabled
复制代码

所有节点ssh免密码登录

先在cm 上执行:

ssh-keygen -t rsa   #一路回车到完成
ssh-copy-id -i ~/.ssh/id_rsa.pub root@cm   #将公钥拷贝到本机的authorized_keys上
复制代码

再在其他节点分别执行以下命令:

注意此处不变,将公钥拷贝到cm的authorized_k

ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub root@cm  
复制代码

在CM上,将authorized_keys分发到其他节点服务器:

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/复制代码