基于Ambari构建本身的大数据平台产品

  目前市场上常见的企业级大数据平台型的产品主流的有两个,一个是Cloudera公司推出的CDH,一个是Hortonworks公司推出的一套HDP,其中HDP是以开源的Ambari做为一个管理监控工具,CDH对应的是Cloudera Manager,国内也有像星环这种公司专门作大数据平台。咱们公司最初是使用CDH的环境,近日领导找到我让我基于Ambari作一个公司本身的数据平台产品。最初接到这个任务我是拒绝的,由于已经有了很完善很成熟的数据平台产品,小公司作这个东西在我看来是浪费人力物力且起步太晚。后来想一想若是公司若是有本身数据平台的产品后续在客户面前也能证实本身的技术实力且我我的也能从源码级别更深刻的学习了解大数据生态圈的各个组件。git

  我的在公司的数据平台从无到有的这个过程。认为建设一个本身的数据平台应该包含三个部分。包括基础设施建设、大数据平台建设、业务系统数据接口三部分组成。其中基础设施建设初期采用对台Linux服务器做为硬件基础设施,后续技术成熟能够采用容器技术更优的配置资源。大数据平台包含数据接入模块,数据存储模块,数据计算模块,资源调度模块,集群监控模块组成,致力于完成数据存储、流计算、批处理、交互式分析等多种需求。本文将重点介绍大数据平台建设规划。业务系统数据接口是根据不一样业务系统需求,对外暴露对应的数据接口提供数据。github

                     

 

1. 数据平台架构

  数据平台按数据处理方式包含数据流处理和数据批处理两种方式,其中数据流处理采用Storm计算框架,目前建议只作简单逻辑处理,计算结果仅用做实时数据展现,后续技术成熟可加入实时ML模块。批处理针对于数据仓库,经过采集程序、对接业务系统或收集业务系统日志等数据,数据存储底层使用分布式文件系统HDFS,基于多种业务需求构建数据仓库用于多维度数据分析。数据计算建议采用当下主流的计算引擎Spark。对于非关系型数据经过代码逻辑进行处理,对于关系型数据采用SQL进行处理,如SparkSQL,Hive,Kylin等组件,计算结果写入支持后台应用程序快速读取的数据库。计算任务经过任务调度系通通一调度执行。数据平台安全机制采用主流的经过主机配置kerberos实现。集群资源监控使用自行开发的XJManager,页面应包含组件名称及状态统计信息,主机健康信息,用户管理等模块,实现用户经过Web页面就能够安装配置大数据平台。项目总体架构以下图所示:web

      

  下边介绍各个模块:数据库

2.1. 数据接入模块

  包含传感器数据采集程序接入,使用Flume采集业务系统日志数据,对接其余业务系统数据库数据。对实时采集的数据使用Kafka做为缓冲。对于对接的业务系统数据若是有操做型数据能够构建ODS系统。用于数据分析的数据(含采集数据和对接业务数据)在Hadoop上构建数据仓库。apache

2.2. 数据仓库模块

  基于Hadoop之上构建数据仓库。数据来源于多种数据源,针对不一样的业务需求设计整理不一样的基础数据表。数据仓库是一种反范式设计,引入冗余。彻底针对不一样维度的数据分析需求去设计。安全

                         

 

2.3. 流计算模块

  使用Storm做为流计算框架。Storm具备低延时的特色。后续若是数据量吞吐量较大且没有较高的时效性需求,能够替换SparkStreaming。服务器

2.4. 离线计算模块

  离线处理模块对于结构化数据使用SQL进行处理,对于非结构化数据编写代码进行处理。使用SQL进行大数据量下的计算建议使用SparkSQL,其余经常使用的使用SQL进行数据计算的组件如传统的Hive,国人开源的Kylin。(Impala不开源不能整合)。架构

2.5. 任务调度模块

  集成Oozie和Ext.js自动部署Oozie的web ui,经过xml配置做业依赖,经过property文件配置运行参数,经过ext.js完成web页面监控。框架

2.6. 平台安全模块

  Kerberos分布式

2.7. 集群监控模块

  1. 实现ambari页面汉化
  2. 修改ambari监控页面样式
  3. 实现ambari一键安装部署

  目前初期建设待解决的问题以下:

3.1. Ambari源码理解

  Ambari源码地址:https://github.com/apache/ambari

  主要修改部分在ambari-web和ambari-views模块

     

3.2. Ambari修改样式

  修改ambari页面样式,包含相关logo修改,页面菜单、操做按钮、提示等内容汉化。

  下图是原ambari样式:

     

3.3. Ambari集成组件

  Ambari相似于Cloudera公司的ClouderaManager,使用源码后编译也仅仅可以实如今线安装组件,在线安装组件速度慢,不稳定,易出现安装失败。因此建议将经常使用组件集成一块儿打包,经常使用组件包括HDFS、MapReduce二、YARN、Hive、Sqoop、Oozie、Zookeeper、Storm、Kafka、Flume、Spark等。提早准备好对应版本的组件安装部署时从本地安装提高速度也更加稳定。     

     

 

3.4. 一键部署脚本编写

  目前离线安装ambari须要提早准备好ambari、HDP、HDP-util三个包构建本地yum源,而后经过yum安装ambari-server,还需安装配置关系型数据库。过程相对于普通用户较为复杂,建议编写一键安装脚本,在服务器准备好以后(免密钥、关闭防火墙、时间同步等),只需运行脚本即可以实如今服务器上安装部署。

相关文章
相关标签/搜索