写点什么

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

作者:程序员欣宸
  • 2022-12-01
    广东
  • 本文字数:4063 字

    阅读完需:约 13 分钟

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

欢迎访问我的 GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

为什么会超简单

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

ansible 学习

为什么要部署单机版 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 操作系统(实在对不起,我这条件有限,别的系统没有试过)

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

  • 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 服务器)

  • 本次实战用到的所有文件如下表所示:



文件摆放(ansible 服务器)

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

  • 在家目录下新建名为 playbooks 的文件夹: mkdir ~/playbooks

  • 把这四个文件放入 playbooks 文件夹:hosts、ansible.cfg、cdh-single-install.yml、cdh-single-start.yml

  • playbooks 文件夹里新建名为 cdh6 的子文件夹;

  • 把这七个文件放入 cdh6 文件夹(即剩余的七个):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

  • 摆放完毕后目录和文件情况如下图,再次提醒, 文件夹 playbooks 一定要放在家目录下 (即: ~/ ):

CDH 服务器设置

  • 本次实战中,CDH 服务器 hostname 是 deskmini,IP 地址是 192.168.50.134 ,需要做以下操作:

  • 请确保 CDH 服务器能 SSH 登录(用户名+密码);

  • SSH 登录到部署 CDH 的机器;

  • 检查 /etc/hostname 文件是正确,如下图:

  • 修改 /etc/hosts 文件,将自己的 IP 地址和 hostname 配置上去,如下图红框所示(事实证明这一步很重要,如果不做可能导致在部署时一直卡在"分配"阶段,看 agent 日志显示 agent 下载 parcel 的进度一直是百分之零):

ansible 参数设置(ansible 服务器)

  • ansible 参数设置的操作设置很简单,就是把部署 CDH 的机器信息配置好即可,包括 IP 地址、登录账号、密码等,修改 ~/playbooks/hosts 文件,内容如下所示,您需要根据自身情况修改 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 服务器)

  • 进入 ~/playbooks 目录;

  • 检查 ansible 远程操作 CDH 服务器是否正常,执行命令 ansible deskmini -a "free -m" ,正常情况下显示 CDH 服务器的内存信息,如下图:

  • 执行此命令开始部署: ansible-playbook cdh-single-install.yml

  • 整个部署过程涉及在线安装、传递文件等耗时的操作,因此请耐心等待(半小时左右),我在部署期间遭遇网络问题导致失败退出,待网络正常后再重新执行上述操作即可,ansible 保证了操作的幂等性;

  • 部署成功如下图所示:

重启 CDH 服务器

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

启动(ansible 服务器)

  • 等待 CDH 服务器重启成功;

  • 登录 ansible 服务器,进入~/playbooks 目录;

  • 执行此命令开始初始化数据库,然后启动 CDH: ansible-playbook cdh-single-start.yml

  • 启动完成输出如下信息:

设置(网页)

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

  • 浏览器访问:http://192.168.50.134:7180 ,如下图,账号密码都是 admin

  • 一路 next,在选择版本页面选择 60 天体验版:

  • 选择主机页面可见 deskmini:

  • 选择下图红框中的 CDH 版本,因为对应的离线包已经复制到 CM 的本地仓库,无需下载:

  • 下载瞬间完成,等候分配、解压、激活:

  • 选择服务的页面,我这里选择了 Data Engineering,因为需要 spark:

  • 选择机器的页面,全选 deskmini:

  • 数据库设置页面, 请和下图保持一致 ,数据库主机都是 localhost ,每个数据库的名称、用户名、密码都相同,分别是: hive、amon、rman、oozie、hue

  • 参数设置页面,请根据磁盘情况适当调整存储路径,例如我的 /home 目录空间充足,这里都改到了 /home 目录下面:

  • 等待启动完成:

  • 等待启动完成后,如下图所示:

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

修复 HDFS 问题

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

  • 点击下图红框位置:

  • 故障详情如下图所示,属于常见的副本不足的问题:

  • 如下图所示,修改 HDFS 的配置 dfs.replication ,从 3 改成 1,然后保存更改:

  • 重启服务:

  • 经过上述设置,副本数已经调整为 1,但是已有文件的副本数还没有同步,需要重新做设置,SSH 登录到电脑 deskmini 上;

  • 执行命令 vi /etc/passwd ,找到账号 hdfs 的配置,如下图红框所示,** /sbin/nologin** 这样的 shell 会导致切换到 hdfs 账号失败:

  • 将上述红框中的内容改为 /bin/bash ,修改后如下图红框所示:

  • 执行命令 su - hdfs ,即可切换到 hdfs 账号,此时执行以下命令即可完成副本数设置:


hadoop fs -setrep -R 1 /
复制代码


  • 服务已经全部正常了:

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

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

  • 在 YARN 的配置页面,调整 yarn.scheduler.maximum-allocation-mbyarn.nodemanager.resource.memory-mb 这两个参数的值,我这里将这个两个参数的值都改成 8G (请按照自己电脑实际硬件配置来调整),如下图:

  • 重启 YARN:

  • 执行 spark-shell 命令之前,先执行命令 su - hdfs 切换到 hdfs 账号;

  • 这次终于成功进入 spark-shell 交互模式:

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

体验 HDFS 和 Spark


hdfs dfs -mkdir /input
复制代码


  • 将文本文件上传到/input 目录:


hdfs dfs -put ./GoneWiththeWind.txt /input
复制代码


  • 执行命令 spark-shell ,启动一个 worker;

  • 输入以下命令,即可完成一次 WorkCount 任务, 192.168.50.134 是 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 的内容,所有文件和版本信息都在里面。

欢迎关注 InfoQ:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...


发布于: 2022-12-01阅读数: 25
用户头像

搜索"程序员欣宸",一起畅游Java宇宙 2018-04-19 加入

前腾讯、前阿里员工,从事Java后台工作,对Docker和Kubernetes充满热爱,所有文章均为作者原创,个人Github:https://github.com/zq2599/blog_demos

评论

发布
暂无评论
超简单的CDH6部署和体验(单机版)_大数据_程序员欣宸_InfoQ写作社区