超简单的CDH6部署和体验(单机版)

欢迎访问我的GitHub

https://github.com/zq2599/blog_demos

内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;

为什么会超简单

借助ansible简化了CDH6部署工作的大部分内容,也降低了手工操作失误的概率,今天实战的内容,是在一台安装了ansible的电脑上(苹果或Linux操作系统)运行ansible脚本,远程操作一台CentOS服务器,在上面部署CDH6,并操作验证本次部署是否成功。

ansible学习

如果您想了解ansible,请参考《ansible2.4安装和体验》

为什么要部署单机版CDH6

主要是用来做为大数据技术的学习和开发的环境,并不适合生产;

实战简述

本次实战内容:部署、启动、验证,整个过程如下图所示:

在这里插入图片描述

全文大纲

本文由以下章节组成:

  1. 环境信息;
  2. 下载文件;
  3. 文件摆放;
  4. CDH机器设置;
  5. ansible参数设置;
  6. 部署;
  7. 重启CDH服务器
  8. 启动;
  9. 设置;
  10. 修复问题;
  11. 体验;

环境信息

本次实战的操作过程如下图所示,安装ansible2.9版本的MabBook Pro电脑作为ansible服务器,执行playbook脚本,对一台CentOS服务器进行远程操作,完成CDH6的部署和启动:


在这里插入图片描述

上图蓝色背景的电脑,可以是苹果操作系统,也可以是Linux操作系统,黄色背景的电脑要用来运行CDH6,必须是CentOS7.7操作系统(实在对不起,我这条件有限,别的系统没有试过)

整个实战涉及的环境版本信息如下:

  1. ansible服务器:macOS Catalina 10.15(实测用CentOS7.7也成功)
  2. CDH服务器:CentOS Linux release 7.7.1908
  3. cm版本:6.1.0
  4. parcel版本:6.1.1
  5. 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个文件的下载地址:

  1. <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/download/boling_cavalry/12098987
  2. <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/download/boling_cavalry/12098987
  3. <font color="blue">cloudera-manager-server-6.1.0-769885.el7.x86_64.rpm</font>:https://archive.cloudera.com/cm6/6.1.0/redhat7/yum/RPMS/x86_64/cloudera-manager-server-6.1.0-769885.el7.x86_64.rpm
  4. <font color="blue">cloudera-manager-daemons-6.1.0-769885.el7.x86_64.rpm</font>:https://archive.cloudera.com/cm6/6.1.0/redhat7/yum/RPMS/x86_64/cloudera-manager-daemons-6.1.0-769885.el7.x86_64.rpm
  5. <font color="blue">cloudera-manager-agent-6.1.0-769885.el7.x86_64.rpm</font>:https://archive.cloudera.com/cm6/6.1.0/redhat7/yum/RPMS/x86_64/cloudera-manager-agent-6.1.0-769885.el7.x86_64.rpm
  6. <font color="blue">CDH-6.1.1-1.cdh6.1.1.p0.875250-el7.parcel</font>:https://archive.cloudera.com/cdh6/6.1.1/parcels/CDH-6.1.1-1.cdh6.1.1.p0.875250-el7.parcel
  7. <font color="blue">CDH-6.1.1-1.cdh6.1.1.p0.875250-el7.parcel.sha</font>:https://archive.cloudera.com/cdh6/6.1.1/parcels/CDH-6.1.1-1.cdh6.1.1.p0.875250-el7.parcel.sha256 (下载完毕后,将扩展名从.sha256改为.sha)
  8. <font color="blue">hosts、ansible.cfg、cdh-single-install.yml、cdh-single-start.yml</font>:这四个文件都保存在我的GitHub仓库,地址是:https://github.com/zq2599/blog_demos ,这里面有多个文件夹,上述文件在名为<font color="blue">ansible-cdh6-single</font>的文件夹中,如下图红框所示:
    在这里插入图片描述

文件摆放(ansible服务器)

如果您已经下载好了上述11个文件,请按照如下位置摆放,这样才能顺利完成部署:

  1. 在家目录下新建名为playbooks的文件夹:<font color="blue">mkdir ~/playbooks</font>
  2. 把这四个文件放入<font color="blue">playbooks</font>文件夹:hosts、ansible.cfg、cdh-single-install.yml、cdh-single-start.yml
  3. 在<font color="blue">playbooks</font>文件夹里新建名为<font color="blue">cdh6</font>的子文件夹;
  4. 把这七个文件放入<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
  5. 摆放完毕后目录和文件情况如下图,再次提醒,<font color="red">文件夹playbooks一定要放在家目录下</font>(即:<font color="red">~/</font>):


    在这里插入图片描述

CDH服务器设置

本次实战中,CDH服务器hostname是deskmini,IP地址是<font color="blue">192.168.50.134</font>,需要做以下操作:

  1. 请确保CDH服务器能SSH登录(用户名+密码);
  2. SSH登录到部署CDH的机器;
  3. 检查<font color="blue">/etc/hostname</font>文件是正确,如下图:


    在这里插入图片描述
  4. 修改<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服务器)

  1. 进入<font color="blue">~/playbooks</font>目录;
  2. 检查ansible远程操作CDH服务器是否正常,执行命令<font color="blue">ansible deskmini -a "free -m"</font>,正常情况下显示CDH服务器的内存信息,如下图:


    在这里插入图片描述
  3. 执行此命令开始部署:<font color="blue">ansible-playbook cdh-single-install.yml</font>
  4. 整个部署过程涉及在线安装、传递文件等耗时的操作,因此请耐心等待(半小时左右),我在部署期间遭遇网络问题导致失败退出,待网络正常后再重新执行上述操作即可,ansible保证了操作的幂等性;
  5. 部署成功如下图所示:


    在这里插入图片描述

重启CDH服务器

由于修改了selinux和swap的设置,需要重启操作系统才能生效,因此请重启CDH服务器;

启动(ansible服务器)

  1. 等待CDH服务器重启成功;
  2. 登录ansible服务器,进入~/playbooks目录;
  3. 执行此命令开始初始化数据库,然后启动CDH:<font color="blue">ansible-playbook cdh-single-start.yml</font>
  4. 启动完成输出如下信息:


    在这里插入图片描述

设置(网页)

CDH已经启动,CDH服务器对外提供了web服务,可以通过浏览器来操作:

  1. 浏览器访问:http://192.168.50.134:7180 ,如下图,账号密码都是<font color="blue">admin</font>:


    在这里插入图片描述
  2. 一路next,在选择版本页面选择60天体验版:


    在这里插入图片描述
  3. 选择主机页面可见deskmini:


    在这里插入图片描述
  4. 选择下图红框中的CDH版本,因为对应的离线包已经复制到CM的本地仓库,无需下载:


    在这里插入图片描述
  5. 下载瞬间完成,等候分配、解压、激活:


    在这里插入图片描述
  6. 选择服务的页面,我这里选择了Data Engineering,因为需要spark:


    在这里插入图片描述
  7. 选择机器的页面,全选deskmini:


    在这里插入图片描述
  8. 数据库设置页面,<font color="blue">请和下图保持一致</font>,数据库主机都是<font color="blue">localhost</font>,每个数据库的名称、用户名、密码都相同,分别是:<font color="red">hive、amon、rman、oozie、hue</font>


    在这里插入图片描述
  9. 参数设置页面,请根据磁盘情况适当调整存储路径,例如我的<font color="blue">/home</font>目录空间充足,这里都改到了<font color="blue">/home</font>目录下面:


    在这里插入图片描述
  10. 等待启动完成:


    在这里插入图片描述
  11. 等待启动完成后,如下图所示:


    在这里插入图片描述

    至此,所有服务启动完成,不过有两个小问题需要修复;

修复HDFS问题

  1. 服务整体情况如下图,HDFS服务有问题,点击红框中的图标:


    在这里插入图片描述
  2. 点击下图红框位置:


    在这里插入图片描述
  3. 故障详情如下图所示,属于常见的副本不足的问题:


    在这里插入图片描述
  4. 如下图所示,修改HDFS的配置<font color="blue">dfs.replication</font>,从3改成1,然后保存更改:


    在这里插入图片描述
  5. 重启服务:


    在这里插入图片描述
  6. 经过上述设置,副本数已经调整为1,但是已有文件的副本数还没有同步,需要重新做设置,SSH登录到电脑deskmini上;
  7. 执行命令<font color="blue">vi /etc/passwd</font>,找到账号hdfs的配置,如下图红框所示,</font>/sbin/nologin</font>这样的shell会导致切换到hdfs账号失败:


    在这里插入图片描述
  8. 将上述红框中的内容改为<font color="blue">/bin/bash</font>,修改后如下图红框所示:


    在这里插入图片描述
  9. 执行命令<font color="blue">su - hdfs</font>,即可切换到hdfs账号,此时执行以下命令即可完成副本数设置:
hadoop fs -setrep -R 1 /
  1. 服务已经全部正常了:


    在这里插入图片描述

调整YARN参数避免spark-shell启动失败

  1. YARN默认给容器分配的内存过小,导致启动spark-shell失败,需要调整YARM相关的内存参数:


    在这里插入图片描述
  2. 在YARN的配置页面,调整<font color="blue">yarn.scheduler.maximum-allocation-mb</font>和<font color="blue">yarn.nodemanager.resource.memory-mb</font>这两个参数的值,我这里将这个两个参数的值都改成<font color="red">8G</font>(请按照自己电脑实际硬件配置来调整),如下图:


    在这里插入图片描述
  3. 重启YARN:


    在这里插入图片描述
  4. 执行spark-shell命令之前,先执行命令<font color="blue">su - hdfs</font>切换到hdfs账号;
  5. 这次终于成功进入spark-shell交互模式:


    在这里插入图片描述

    至此,CDH6的部署、启动、设置都已经完成,接下来体验一下大数据服务;

体验HDFS和Spark

接下来运行一个Spark任务,经典的WordCount:

  1. 准备一份文本文件,里面是英文内容,您可以下载这个文件:https://raw.githubusercontent.com/zq2599/blog_demos/master/files/GoneWiththeWind.txt
  2. 登录SSH,切换到<font color="red">hdfs</font>账号;
  3. 创建HDFS文件夹:
hdfs dfs -mkdir /input
  1. 将文本文件上传到/input目录:
hdfs dfs -put ./GoneWiththeWind.txt /input
  1. 执行命令<font color="blue">spark-shell</font>,启动一个worker;
  2. 输入以下命令,即可完成一次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")
  1. 执行完毕后,下载结果文件:
hdfs dfs -get /output/*
  1. 上述命令将spark任务的结果文件part-00000、part-00001下载到本机,用vi命令查看文件,如下图,可见WorkCount执行成功:


    在这里插入图片描述
  2. 在浏览器上查看历史任务,地址是:http://192.168.50.134:18088 ,可见此次任务的详情:


    在这里插入图片描述

    至此,CDH6的部署、设置、体验都已经完成,如果您正在搭建自己的学习或者开发环境,希望本文能给您一些参考。

深度定制

整个实战虽然避免了传统部署过程中的大量手动操作,但弊端也很明显:所有路径、文件名、服务版本都是固定的,不能做任何设置,虽然ansible也支持变量,但是如果变量太多也会给您带来困扰,所以,如果您有修改版本或路径的需求,建议您自行修改cdh-single-install.yml、cdh-single-start.yml的内容,所有文件和版本信息都在里面。

欢迎关注公众号:程序员欣宸

微信搜索「程序员欣宸」,我是欣宸,期待与您一同畅游Java世界...
https://github.com/zq2599/blog_demos

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,179评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,229评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,032评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,533评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,531评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,539评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,916评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,813评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,568评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,654评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,354评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,918评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,152评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,852评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,378评论 2 342