基于大数据平台的毕业设计01:基于Docker的HDP集群搭建

2023-10-31

前言

好多人问我,这种基于大数据平台的xxxx的毕业设计要怎么做。这个可以参考之前写得关于我大数据毕业设计的文章基于大数据平台的毕业设计。这篇文章是将对之前的毕设进行优化。

个人觉得可以分为两个部分。第一个部分就是基础的平台搭建。例如Hadoop集群、Kafka集群。

第二个部分就是上层应用的建设,例如基于大数据平台的数据分析,以及大屏展示之类的可视化应用。前者提供了基础平台能力,让整个设计加入大数据元素;后者提供了上层应用能力,主要是让别人明白你利用大数据平台做了什么

前些日子闲得无聊,在一台虚拟机上基于docker容器,使用Ambari搭建了一个HDP版本的Hadoop大数据集群。所以就结合这篇文章,对第一部分进行阐述,提供一个新的思路。

思路

在集群搭建的过程中,遇到了形形色色的问题。在问题里去思考、去查阅资料。这是一个蛮有意思的事情。

在上一篇文章也写了,我的大数据毕业设计的Hadoop平台搭建部分,是基于三台虚拟机实现的。当时使用的Apache版本的Hadoop。

Apache版本的缺点是没有一个统一的管控平台。

  1. 前期的安装需要在每个节点手动分发安装包、执行启动命令。
  2. 后期的节点维护、服务启停都需要去后台执行命令。

加上三台虚拟机,每次启动费个老劲。所以我就寻思用Ambari来搭建一个HDP版本的、一个虚拟机就能搞定的、基于docker容器的Hadoop集群。

整体架构

整个架构设计和技术选型,都是根据个人需求选择,可以参考。

1. 技术选型

宿主机和docker的操作系统选择的是centos7。我尝试了centos8,不太行。主要

  1. docker:容器,代替虚拟机节点搭建集群
  2. docker-compose:编排容器。对所有容器进行管理、启动
  3. Ambari:2.7.3版本。可视化安装、监控、管理所有集群。
  4. HDP:3.1版本。其中包括Hadoop、HDFS、Yarn、Spark、Kafka、Zookeeper等服务。
  5. MySQL:ambari元数据库。后面应用也会用到。

除此之外,还需要shell编写一些脚本。

2. 架构设计

在这里插入图片描述

平台一览

这就是Ambari的首页仪表盘的部分,里面可以看到HDFS的存储,内存使用量指标。

Hadoop集群

Hadoop集群一共用了四个节点。NameNode,一个备用的NameNode,两个DataNode。

点击右侧的NameNode UI可以看到Hadoop集群的UI界面。

集群节点

这里的Hosts指的就是所有集群节点的个数,也是docker节点的个数。这里因为内存有限,所以一个docker启动了好几个服务

例如这个kafka1节点,即安装了Kafka,又安装了Zookeeper。

环境准备

我在实践docker搭建集群的时候,90%的时间都花费在了环境准备上。同样,遇到的90%的问题也都在这个步骤上。

1. 虚拟机准备

我自己的架构是一台虚拟机,然后其他节点都是用docker代替的。docker你可以理解为轻量虚拟机。

我选择docker的理由:

  1. 觉得挺有意思,想挑战一下自己的软肋。
  2. 一个虚拟机可能需要占用20G存储,一个docker只占用几百MB*。
  3. 只需要启动一台虚拟机即可。docker作为应用服务运行在这台虚拟机上。

其实,这里我是建议使用3 ~ 4台虚拟机的。因为docker本身对于很多人来说是有一定难度的,再加上需要将docker构建成节点,是需要花费很多时间的。

2. docker容器准备

如果说是头铁非要用docker,那么可以看看这一步。我在这一步构建节点docker镜像的时候,反复构建了很多次。

dockerfile

我们要自己编写dockerfile几月centtos7来构建docker容器的系统镜像。而且,docker容器代替了虚拟机,那么docker容器里的环境就要和虚拟机一样。所以dockerfile需要满足以下条件。

  1. 开放22端口,启动sshd服务
  2. 配置jdk、scala
  3. 生成密钥,配置ssh免密登录
  4. python2.7(centos7自带)
  5. yum安装一些软件,例如chrony等
  6. 配置hosts

在编写dockerfile阶段,查阅了很多资料,反复构建,尝试了很多次才成功。

docker-compose

docker-compose是docker容器的编排工具,需要编写一个yaml配置文件,通过start/stop来启动/停止所有的容器。

这个centos_hdp就是我自己构建的镜像,ports来开放容器的端口,volumes来挂载宿主机的目录。

3. 下载安装包

我在2016年毕业设计中,所搭建的大数据平台的各个组件都是独立下载安装的。Hadoop的安装包需要去Hadoop官网下载,Kafka安装包需要去Kafka官网下载。想安装哪个版本就安装哪个版本。

基于Ambari安装,所有组件都包含在HDP安装包里,不过这个安装包挺大的,10G。

ambari-2.7.3.0-centos7.tar.gz
HDP-3.1.0.0-centos7-rpm.tar.gz
HDP-UTILS-1.1.0.22-centos7.tar.gz
HDP-GPL-3.1.0.0-centos7-gpl.tar.gz

上面就是所需安装包的列表,下载到之后,放到本地搭建的http服务器中,在ambari安装中时使用。

结语

本篇文章主要讲了大数据集群搭建的架构设计和实现思路部分,后面文章会探讨上层应用的构建。我现在自己也在学前端,想自己实现一些web应用。关于大数据集群搭建、后台实现以及前端技术,可以私我加群互相交流。

基于docker使用Ambari搭建Hadoop是有难度的,谨慎尝试。

感谢每一次遇见

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于大数据平台的毕业设计01:基于Docker的HDP集群搭建 的相关文章

随机推荐

  • 蓝桥杯官网练习题(谈判)

    题目描述 在很久很久以前 有 n 个部落居住在平原上 依次编号为 1 到 n 第 i 个部落的人数为 ti 有一年发生了灾荒 年轻的政治家小蓝想要说服所有部落一同应对灾荒 他能通过谈判来说服部落进行联合 每次谈判 小蓝只能邀请两个部落参加
  • 测试集数据语义特征t_SNE降维可视化

    在图像分类通用步骤中 第一步是训练数据集 第二步是测试数据集 而无论是训练还是测试 对我们而言都是黑盒子 我们只知道模型从训练数据中学习到了特征 然后应用到测试集数据集中 最终得出测试集数据的分类结果 对于其中的细节 我们就不得而知了 因此
  • 人工智能(python)开发——Linux环境基本知识要点

    1 终端工具 打开方法 1 点击左侧图标 2 点击 搜索计算机 终端图标上方 输入 gnome terminal 终端 3 快捷键 Ctrl shift t 退出方法 1 exit lt 回车 gt 2 ctrl d 3 点击左上角x 2
  • 【电路设计】将AC交流电转换为DC直流电

    文章传送门 前言 一 直流 AC 与交流 DC 的区别 二 转换步骤 降压 整流 滤波 稳压 1 整流 交流电 直流电 2 滤波 滤除脉动直流的交流部分 3 稳压 稳定到需要的电压值 三 简单分辨直流电与交流电 前言 日常生活中用到的都是2
  • ubuntu的tmp目录下自己创建的文件每次重启后自动删除

    ubuntu的tmp目录下自己创建的文件每次重启后自动删除 可以修该 etc default rcS文件中的内容而改变为不自动删除 输入命令 vim etc default rcS 开始编辑 将TMPTIME 0改为TMPTIME 1 保存
  • 快速排序——C++实现

    快速排序采用 分治法 首先选取一个 轴值 假设数据中有k个数小于轴值 那么这k个数放在数组最左边的k个位置上 而不小于k的数放在数组右边的n k个位置上 这就实现了数组的一个 分割 给定分割中的值不必排序 只要求所有结点都被轴值正确分割 快
  • 在Android中简单使用消息通知

    发送通知 消息通知可以在Activity BroadcastReceiver service中创建 但是无论在哪创建 整体步骤基本一样 Android中使用通知渠道来开启通知功能 通知渠道一旦设定就不能再更改 所以创建通知渠道的时候最好进行
  • Tensrfow GAN Discriminator 如何使用hinge loss训练

    hinge loss 核心点 网络的输出要确保是 1 1 范围 之前一直用cross entrype loss这一点没有台注意 所以之前一直没写对 hinge loss 核心代码 def Hinge loss pos neg name Hi
  • ecipse theme

    市场里搜 jeeeyul s Eclipse Themes
  • 【golang】1、用 double check 正确的锁临界区

    文章目录 一 错误的互斥锁示例 二 粗暴的临界区 三 double check 来提升性能 四 总结 如果写到并发的程序 就要考虑加锁 而加锁很容易出现 bug 且极难排查 本文以 golang 语言为例 介绍怎样正确地锁住临界区 一 错误
  • Java中如何使用数组作为函数的参数值或返回值呢?

    转自 Java中如何使用数组作为函数的参数值或返回值呢 数组在Java中我们作为一个数据类型 所以它可以作为一个函数的参数进行输入 也可以作为一个函数的返回值进行返回 下文将通过示例的方式讲述 数组作为函数参数值及返回值的相关说明 例 数组
  • 深圳集体户口新生儿入户(福田区八卦岭派出所)办理实录

    情况说明 本人深圳集体户口 户籍辖区 深圳市福田区八卦岭辖区 无房产 租房居住在罗湖区泥岗村 老婆 福建省邵武市非农业户口 无房产 宝宝2009年2月在福建省邵武市立医院出生 自2009 2 25日起办理入户手续 2009 2 27办理完毕
  • 如何给开源仓库提交pull request?

    Pull Request PR 是一种在基于版本控制系统的协作开发中使用的功能 它允许开发人员将自己所做的代码更改 commits 提交给项目的主要代码库 具体而言 当在分支中做出代码更新后 开发人员可以发起一个PR 请求将其分支上的更改合
  • Missing compiler required member 'Microsoft.CSharp.RuntimeBinder.Binder.Convert'

    类似于Missing compiler required member Microsoft CSharp RuntimeBinder Binder Convert 的异常 一般都是没有引用程序集Microsoft CSharp dll 引用
  • html 弹出框显示到最顶层,layer弹出层显示在top顶层的方法

    layer弹出层显示在top顶层的方法 因为项目框架用了iframe 所以在用layer时 默认layer open弹出的窗口只能在iframe子窗口区域显示 现在想让layer在父窗口或者说框架的最顶层显示 想到用top layer op
  • 【githubshare】一款能帮你背单词的 VSCode 插件,可将代码变量、注释、文档中的陌生英文单词,添加进 VSCode 单词库中,让你在 VSCode 上也能背单词

    一款能帮你背单词的 VSCode 插件 huile8 会了吧 可将代码变量 注释 文档中的陌生英文单词 添加进 VSCode 单词库中 让你在 VSCode 上也能背单词 doge GitHub github com mqycn huile
  • .net core 使用MQTTNET搭建MQTT 服务以及客户端例子

    最近项目可能用到MQTT协议故而稍作研究了一下 MQTT协议 基于TCP封装的发布订阅的消息传递机制 理论详情可查看MQTT 入门 liefyuan的博客 CSDN博客 mqtt 这位老兄的总结 废话不多说 先上效果图 采用 NET体系用的
  • 区块链开发难点有什么?

    区块链将成为改变未来的新技术 区块链技术人才高薪难求 区块链开发难度是不是特别大 其实区块链开发的技术并不算太难 难就难在要转变原有开发的概念 加入区块链去中心化的设计思想 区块链项目开发的难点有 转变开发思维是最大的难点 与传统开发以面向
  • TrainingTesseract3

    Introduction http code google com p tesseract ocr wiki TrainingTesseract3 Tesseract 3 0x is fully trainable This page de
  • 基于大数据平台的毕业设计01:基于Docker的HDP集群搭建

    前言 好多人问我 这种基于大数据平台的xxxx的毕业设计要怎么做 这个可以参考之前写得关于我大数据毕业设计的文章基于大数据平台的毕业设计 这篇文章是将对之前的毕设进行优化 个人觉得可以分为两个部分 第一个部分就是基础的平台搭建 例如Hado