一台虚拟机,基于docker搭建大数据HDP集群
前言
好多人问我,这种基于大数据平台的xxxx的毕业设计要怎么做。这个可以参考之前写得关于我大数据毕业设计的文章。这篇文章是将对之前的毕设进行优化。
个人觉得可以分为两个部分。第一个部分就是基础的平台搭建。例如Hadoop集群、Kafka集群。
第二个部分就是上层应用的建设,例如基于大数据平台的数据分析,以及大屏展示之类的可视化应用。前者提供了基础平台能力,让整个设计加入大数据元素;后者提供了上层应用能力,主要是让别人明白你利用大数据平台做了什么。
前些日子闲得无聊,在一台虚拟机上基于docker容器,使用Ambari搭建了一个HDP版本的Hadoop大数据集群。所以就结合这篇文章,对第一部分进行阐述,提供一个新的思路。
思路
在集群搭建的过程中,遇到了形形色色的问题。在问题里去思考、去查阅资料。这是一个蛮有意思的事情。
在上一篇文章也写了,我的大数据毕业设计的Hadoop平台搭建部分,是基于三台虚拟机实现的。当时使用的Apache版本的Hadoop。
Apache版本的缺点是没有一个统一的管控平台。
- 前期的安装需要在每个节点手动分发安装包、执行启动命令。
- 后期的节点维护、服务启停都需要去后台执行命令。
加上三台虚拟机,每次启动费个老劲。所以我就寻思用Ambari来搭建一个HDP版本的、一个虚拟机就能搞定的、基于docker容器的Hadoop集群。
整体架构
整个架构设计和技术选型,都是根据个人需求选择,可以参考。
1. 技术选型
宿主机和docker的操作系统选择的是centos7。我尝试了centos8,不太行。主要
- docker:容器,代替虚拟机节点搭建集群
- docker-compose:编排容器。对所有容器进行管理、启动
- Ambari:2.7.3版本。可视化安装、监控、管理所有集群。
- HDP:3.1版本。其中包括Hadoop、HDFS、Yarn、Spark、Kafka、Zookeeper等服务。
- 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的理由:
- 觉得挺有意思,想挑战一下自己的软肋。
- *一个虚拟机可能需要占用20G存储,一个docker只占用几百MB**。
- 只需要启动一台虚拟机即可。docker作为应用服务运行在这台虚拟机上。
其实,这里我是建议使用3 ~ 4台虚拟机的。因为docker本身对于很多人来说是有一定难度的,再加上需要将docker构建成节点,是需要花费很多时间的。
2. docker容器准备
如果说是头铁非要用docker,那么可以看看这一步。我在这一步构建节点docker镜像的时候,反复构建了很多次。
dockerfile
我们要自己编写dockerfile几月centtos7来构建docker容器的系统镜像。而且,docker容器代替了虚拟机,那么docker容器里的环境就要和虚拟机一样。所以dockerfile需要满足以下条件。
- 开放22端口,启动sshd服务
- 配置jdk、scala
- 生成密钥,配置ssh免密登录
- python2.7(centos7自带)
- yum安装一些软件,例如chrony等
- 配置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是有难度的,谨慎尝试。
一台虚拟机,基于docker搭建大数据HDP集群的更多相关文章
- 基于 Docker 搭建 Consul 多数据中心集群
本文介绍了在 Windows 10 上基于 Docker 搭建 Consul 多数据中心集群的步骤,包括 Consul 镜像的拉取和容器的创建,每个数据中心对应服务端节点和客户节点的创建,节点之间相互 ...
- 基于Docker搭建大数据集群(六)Hive搭建
基于Docker搭建大数据集群(六)Hive搭建 前言 之前搭建的都是1.x版本,这次搭建的是hive3.1.2版本的..还是有一点细节不一样的 Hive现在解析引擎可以选择spark,我是用spar ...
- 基于Docker搭建大数据集群(七)Hbase部署
基于Docker搭建大数据集群(七)Hbase搭建 一.安装包准备 Hbase官网下载 微云下载 | 在 tar 目录下 二.版本兼容 三.角色分配 节点 Master Regionserver cl ...
- 基于Docker搭建大数据集群(一)Docker环境部署
本篇文章是基于Docker搭建大数据集群系列的开篇之作 主要内容 docker搭建 docker部署CentOS 容器免密钥通信 容器保存成镜像 docker镜像发布 环境 Linux 7.6 一.D ...
- ActiveMQ此例简单介绍基于docker的activemq安装与集群搭建
ActiveMQ拓展连接 此例简单介绍基于Docker的activemq安装与集群搭建 一 :安装 1.获取activemq镜像 docker pull webcenter/activemq 2.启动 ...
- Docker搭建MySQL的PXC集群
原文:Docker搭建MySQL的PXC集群 一.简介 PXC属于一套近乎完美的mysql高可用集群解决方案,相比那些比较传统的基于主从复制模式的集群架构MHA和MM+keepalived,galer ...
- 基于docker实现redis高可用集群
基于docker实现redis高可用集群 yls 2019-9-20 简介 基于docker和docker-compose 使用redis集群和sentinel集群,达到redis高可用,为缓存做铺垫 ...
- 大数据Hadoop-Spark集群部署知识总结(一)
大数据Hadoop-Spark集群部署知识总结 一.启动/关闭 hadoop myhadoop.sh start/stop 分步启动: 第一步:在hadoop102主机上 sbin/start-dfs ...
- 入门大数据---基于Zookeeper搭建Spark高可用集群
一.集群规划 这里搭建一个 3 节点的 Spark 集群,其中三台主机上均部署 Worker 服务.同时为了保证高可用,除了在 hadoop001 上部署主 Master 服务外,还在 hadoop0 ...
随机推荐
- Ceph创建一个新集群 报错: File "/usr/bin/ceph-deploy", line 18, in..........
[root@ceph-node1 ceph]# ceph-deploy new node1 Traceback (most recent call last): File "/usr/bin ...
- Java多线程开发系列之五:Springboot 中异步请求方法的使用
Springboot 中异步线程的使用在过往的后台开发中,我们往往使用java自带的线程或线程池,来进行异步的调用.这对于效果来说没什么,甚至可以让开发人员对底层的状况更清晰,但是对于代码的易读性和可 ...
- HCIA-Datacom 3.3 实验三:以太网链路聚合实验
实验介绍 随着网络规模不断扩大,用户对骨干链路的带宽和可靠性提出越来越高的要求.在传统技术中,常用更换高速率的接口板或更换支持高速率接口板的设备的方式来增加带宽,但这种方案需要付出高额的费用,而且不够 ...
- Taurus.MVC 微服务框架 入门开发教程:项目部署:6、微服务应用程序Docker部署实现多开。
系列目录: 本系列分为项目集成.项目部署.架构演进三个方向,后续会根据情况调整文章目录. 开源地址:https://github.com/cyq1162/Taurus.MVC 本系列第一篇:Tauru ...
- laravel框架(完整上传到数据库,不提交图片)(以提交员工信息为例)
第一步:使用PHP终端创建一个名为blog的框架 composer create-project --prefer-dist laravel/laravel blog 7.x 创建好之后,在框架中找到 ...
- KingbaseES V8R6 ksql 关闭自动提交
背景 用过oracle或mysql的人都知道,做一个dml语句,如果发现做错了,还可以rollback,但在Kingbase ksql 中,如果执行一个dml,没有先运行begin; 的话,一执行完就 ...
- 干货分享!JAVA诊断工具Arthas在Rainbond上实践~
别再担心线上 Java 业务出问题怎么办了,Arthas 帮助你解决以下常见问题: 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 ...
- Elasticsearch高级检索之使用单个字母数字进行分词N-gram tokenizer(不区分大小写)【实战篇】
一.前言 小编最近在做到一个检索相关的需求,要求按照一个字段的每个字母或者数字进行检索,如果是不设置分词规则的话,英文是按照单词来进行分词的. 小编以7.6.0版本做的功能哈,大家可以根据自己的版本去 ...
- Jenkins+Gitlab实现持续集成持续部署
一.GITLAB安装与使用 官网:https://about.gitlab.com/ 1.GITLAB安装要求 (1)中文文档地址 https://docs.gitlab.cn/jh/instal ...
- 第六章:Django 综合篇 - 14:Django 日志
Django使用Python内置的logging模块实现它自己的日志系统. 如果你没有使用过logging模块,请参考Python教程中的相关章节. 直达链接<logging模块详解>. ...