欢送拜访我的GitHub
https://github.com/zq2599/blog_demos
内容:所有原创文章分类汇总及配套源码,波及Java、Docker、Kubernetes、DevOPS等;
为什么会超简略
借助ansible简化了CDH6部署工作的大部分内容,也升高了手工操作失误的概率,明天实战的内容,是在一台装置了ansible的电脑上(苹果或Linux操作系统)运行ansible脚本,近程操作一台CentOS服务器,在下面部署CDH6,并操作验证本次部署是否胜利。
ansible学习
如果您想理解ansible,请参考《ansible2.4装置和体验》
为什么要部署单机版CDH6
次要是用来做为大数据技术的学习和开发的环境,并不适宜生产;
实战简述
本次实战内容:部署、启动、验证,整个过程如下图所示:
全文纲要
本文由以下章节组成:
- 环境信息;
- 下载文件;
- 文件摆放;
- CDH机器设置;
- ansible参数设置;
- 部署;
- 重启CDH服务器
- 启动;
- 设置;
- 修复问题;
- 体验;
环境信息
本次实战的操作过程如下图所示,装置ansible2.9版本的MabBook Pro电脑作为ansible服务器,执行playbook脚本,对一台CentOS服务器进行近程操作,实现CDH6的部署和启动:
上图蓝色背景的电脑,能够是苹果操作系统,也能够是Linux操作系统,黄色背景的电脑要用来运行CDH6,必须是CentOS7.7操作系统(切实对不起,我这条件无限,别的零碎没有试过)
整个实战波及的环境版本信息如下:
- ansible服务器:macOS Catalina 10.15(实测用CentOS7.7也胜利)
- CDH服务器:CentOS Linux release 7.7.1908
- cm版本:6.1.0
- parcel版本:6.1.1
- jdk版本:8u191
下载文件(ansible服务器)
本次实战用到的所有文件如下表所示:
编号 | 文件名 | 简介 |
---|---|---|
1 | jdk-8u191-linux-x64.tar.gz | Linux版的jdk安装包 |
2 | mysql-connector-java-5.1.34.jar | mysql的JDBC驱动 |
3 | cloudera-manager-server-6.1.0-769885.el7.x86_64.rpm | cm的server安装包 |
4 | cloudera-manager-daemons-6.1.0-769885.el7.x86_64.rpm | cm的daemon安装包 |
5 | cloudera-manager-agent-6.1.0-769885.el7.x86_64.rpm | cm的agent安装包 |
6 | CDH-6.1.1-1.cdh6.1.1.p0.875250-el7.parcel | CDH利用离线安装包 |
7 | CDH-6.1.1-1.cdh6.1.1.p0.875250-el7.parcel.sha | CDH利用离线安装包sha验证码 |
8 | hosts | ansible用到的近程主机配置,外面记录了CDH6服务器的信息 |
9 | ansible.cfg | ansible用到的配置信息 |
9 | ansible.cfg | ansible用到的配置信息 |
10 | cdh-single-install.yml | 部署CDH时用到的ansible脚本 |
11 | cdh-single-start.yml | 首次启动CDH时用到的ansible脚本 |
上述11个文件的下载地址:
- <font color="blue">jdk-8u191-linux-x64.tar.gz</font>:Oracle官网可下,另外我将jdk-8u191-linux-x64.tar.gz和mysql-connector-java-5.1.34.jar一起打包上传到csdn,您能够一次性下载,地址:https://download.csdn.net/dow...
- <font color="blue">mysql-connector-java-5.1.34.jar</font>:maven地方仓库可下,另外我将jdk-8u191-linux-x64.tar.gz和mysql-connector-java-5.1.34.jar一起打包上传到csdn,您能够一次性下载,地址:https://download.csdn.net/dow...
- <font color="blue">cloudera-manager-server-6.1.0-769885.el7.x86_64.rpm</font>:https://archive.cloudera.com/...
- <font color="blue">cloudera-manager-daemons-6.1.0-769885.el7.x86_64.rpm</font>:https://archive.cloudera.com/...
- <font color="blue">cloudera-manager-agent-6.1.0-769885.el7.x86_64.rpm</font>:https://archive.cloudera.com/...
- <font color="blue">CDH-6.1.1-1.cdh6.1.1.p0.875250-el7.parcel</font>:https://archive.cloudera.com/...
- <font color="blue">CDH-6.1.1-1.cdh6.1.1.p0.875250-el7.parcel.sha</font>:https://archive.cloudera.com/... (下载结束后,将扩展名从.sha256改为.sha)
- <font color="blue">hosts、ansible.cfg、cdh-single-install.yml、cdh-single-start.yml</font>:这四个文件都保留在我的GitHub仓库,地址是:https://github.com/zq2599/blo... ,这外面有多个文件夹,上述文件在名为<font color="blue">ansible-cdh6-single</font>的文件夹中,如下图红框所示:
文件摆放(ansible服务器)
如果您曾经下载好了上述11个文件,请依照如下地位摆放,这样能力顺利完成部署:
- 在家目录下新建名为playbooks的文件夹:<font color="blue">mkdir ~/playbooks</font>
- 把这四个文件放入<font color="blue">playbooks</font>文件夹:hosts、ansible.cfg、cdh-single-install.yml、cdh-single-start.yml
- 在<font color="blue">playbooks</font>文件夹里新建名为<font color="blue">cdh6</font>的子文件夹;
- 把这七个文件放入<font color="blue">cdh6</font>文件夹(即残余的七个):jdk-8u191-linux-x64.tar.gz、mysql-connector-java-5.1.34.jar、cloudera-manager-server-6.1.0-769885.el7.x86_64.rpm、cloudera-manager-daemons-6.1.0-769885.el7.x86_64.rpm、cloudera-manager-agent-6.1.0-769885.el7.x86_64.rpm、CDH-6.1.1-1.cdh6.1.1.p0.875250-el7.parcel、CDH-6.1.1-1.cdh6.1.1.p0.875250-el7.parcel.sha
- 摆放结束后目录和文件状况如下图,再次揭示,<font color="red">文件夹playbooks肯定要放在家目录下</font>(即:<font color="red">~/</font>):
CDH服务器设置
本次实战中,CDH服务器hostname是deskmini,IP地址是<font color="blue">192.168.50.134</font>,须要做以下操作:
- 请确保CDH服务器能SSH登录(用户名+明码);
- SSH登录到部署CDH的机器;
- 查看<font color="blue">/etc/hostname</font>文件是正确,如下图:
- 批改<font color="blue">/etc/hosts</font>文件,将本人的IP地址和hostname配置下来,如下图红框所示(事实证明这一步很重要,如果不做可能导致在部署时始终卡在"调配"阶段,看agent日志显示agent下载parcel的进度始终是百分之零):
ansible参数设置(ansible服务器)
ansible参数设置的操作设置很简略,就是把部署CDH的机器信息配置好即可,包含IP地址、登录账号、明码等,批改<font color="blue">~/playbooks/hosts</font>文件,内容如下所示,您须要依据本身状况批改deskmini、ansible_host、ansible_port、ansible_user、ansible_password:
[cdh_group]deskmini ansible_host=192.168.50.134 ansible_port=22 ansible_user=root ansible_password=888888
部署(ansible服务器)
- 进入<font color="blue">~/playbooks</font>目录;
- 查看ansible近程操作CDH服务器是否失常,执行命令<font color="blue">ansible deskmini -a "free -m"</font>,失常状况下显示CDH服务器的内存信息,如下图:
- 执行此命令开始部署:<font color="blue">ansible-playbook cdh-single-install.yml</font>
- 整个部署过程波及在线装置、传递文件等耗时的操作,因而请急躁期待(半小时左右),我在部署期间遭逢网络问题导致失败退出,待网络失常后再从新执行上述操作即可,ansible保障了操作的幂等性;
- 部署胜利如下图所示:
重启CDH服务器
因为批改了selinux和swap的设置,须要重启操作系统能力失效,因而请重启CDH服务器;
启动(ansible服务器)
- 期待CDH服务器重启胜利;
- 登录ansible服务器,进入~/playbooks目录;
- 执行此命令开始初始化数据库,而后启动CDH:<font color="blue">ansible-playbook cdh-single-start.yml</font>
- 启动实现输入如下信息:
设置(网页)
CDH曾经启动,CDH服务器对外提供了web服务,能够通过浏览器来操作:
- 浏览器拜访:http://192.168.50.134:7180 ,如下图,账号密码都是<font color="blue">admin</font>:
- 一路next,在抉择版本页面抉择60天体验版:
- 抉择主机页面可见deskmini:
- 抉择下图红框中的CDH版本,因为对应的离线包曾经复制到CM的本地仓库,无需下载:
- 下载霎时实现,等待调配、解压、激活:
- 抉择服务的页面,我这里抉择了Data Engineering,因为须要spark:
- 抉择机器的页面,全选deskmini:
- 数据库设置页面,<font color="blue">请和下图保持一致</font>,数据库主机都是<font color="blue">localhost</font>,每个数据库的名称、用户名、明码都雷同,别离是:<font color="red">hive、amon、rman、oozie、hue</font>
- 参数设置页面,请依据磁盘状况适当调整存储门路,例如我的<font color="blue">/home</font>目录空间短缺,这里都改到了<font color="blue">/home</font>目录上面:
- 期待启动实现:
- 期待启动实现后,如下图所示:
至此,所有服务启动实现,不过有两个小问题须要修复;
修复HDFS问题
- 服务整体状况如下图,HDFS服务有问题,点击红框中的图标:
- 点击下图红框地位:
- 故障详情如下图所示,属于常见的正本有余的问题:
- 如下图所示,批改HDFS的配置<font color="blue">dfs.replication</font>,从3改成1,而后保留更改:
- 重启服务:
- 通过上述设置,正本数曾经调整为1,然而已有文件的正本数还没有同步,须要从新做设置,SSH登录到电脑deskmini上;
- 执行命令<font color="blue">vi /etc/passwd</font>,找到账号hdfs的配置,如下图红框所示,</font>/sbin/nologin</font>这样的shell会导致切换到hdfs账号失败:
- 将上述红框中的内容改为<font color="blue">/bin/bash</font>,批改后如下图红框所示:
- 执行命令<font color="blue">su - hdfs</font>,即可切换到hdfs账号,此时执行以下命令即可实现正本数设置:
hadoop fs -setrep -R 1 /
- 服务曾经全副失常了:
调整YARN参数防止spark-shell启动失败
- YARN默认给容器调配的内存过小,导致启动spark-shell失败,须要调整YARM相干的内存参数:
- 在YARN的配置页面,调整<font color="blue">yarn.scheduler.maximum-allocation-mb</font>和<font color="blue">yarn.nodemanager.resource.memory-mb</font>这两个参数的值,我这里将这个两个参数的值都改成<font color="red">8G</font>(请依照本人电脑理论硬件配置来调整),如下图:
- 重启YARN:
- 执行spark-shell命令之前,先执行命令<font color="blue">su - hdfs</font>切换到hdfs账号;
- 这次终于胜利进入spark-shell交互模式:
至此,CDH6的部署、启动、设置都曾经实现,接下来体验一下大数据服务;
体验HDFS和Spark
接下来运行一个Spark工作,经典的WordCount:
- 筹备一份文本文件,外面是英文内容,您能够下载这个文件:https://raw.githubusercontent...
- 登录SSH,切换到<font color="red">hdfs</font>账号;
- 创立HDFS文件夹:
hdfs dfs -mkdir /input
- 将文本文件上传到/input目录:
hdfs dfs -put ./GoneWiththeWind.txt /input
- 执行命令<font color="blue">spark-shell</font>,启动一个worker;
- 输出以下命令,即可实现一次WorkCount工作,<font color="blue">192.168.50.134</font>是deskmini的IP地址:
sc.textFile("hdfs://192.168.50.134:8020/input/GoneWiththeWind.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).saveAsTextFile("hdfs://192.168.50.134:8020/output")
- 执行结束后,下载后果文件:
hdfs dfs -get /output/*
- 上述命令将spark工作的后果文件part-00000、part-00001下载到本机,用vi命令查看文件,如下图,可见WorkCount执行胜利:
- 在浏览器上查看历史工作,地址是:http://192.168.50.134:18088 ,可见此次工作的详情:
至此,CDH6的部署、设置、体验都曾经实现,如果您正在搭建本人的学习或者开发环境,心愿本文能给您一些参考。
深度定制
整个实战尽管防止了传统部署过程中的大量手动操作,但弊病也很显著:所有门路、文件名、服务版本都是固定的,不能做任何设置,尽管ansible也反对变量,然而如果变量太多也会给您带来困扰,所以,如果您有批改版本或门路的需要,建议您自行批改cdh-single-install.yml、cdh-single-start.yml的内容,所有文件和版本信息都在外面。
欢送关注公众号:程序员欣宸
微信搜寻「程序员欣宸」,我是欣宸,期待与您一起畅游Java世界...
https://github.com/zq2599/blog_demos