共计 2872 个字符,预计需要花费 8 分钟才能阅读完成。
目前市场上常见的企业级大数据平台型的产品主流的有两个,一个是 Cloudera 公司推出的 CDH,一个是 Hortonworks 公司推出的一套 HDP,其中 HDP 是以开源的 Ambari 作为一个管理监控工具,CDH 对应的是 Cloudera Manager,国内也有像星环这种公司专门做大数据平台。我们公司最初是使用 CDH 的环境,近日领导找到我让我基于 Ambari 做一个公司自己的数据平台产品。最初接到这个任务我是拒绝的,因为已经有了很完善很成熟的数据平台产品,小公司做这个东西在我看来是浪费人力物力且起步太晚。后来想想如果公司如果有自己数据平台的产品后续在客户面前也能证明自己的技术实力且我个人也能从源码级别更深入的学习了解大数据生态圈的各个组件。
个人在公司的数据平台从无到有的这个过程。认为建设一个自己的数据平台应该包含三个部分。包括基础设施建设、大数据平台建设、业务系统数据接口三部分组成。其中基础设施建设初期采用对台 Linux 服务器作为硬件基础设施,后续技术成熟可以采用容器技术更优的配置资源。大数据平台包含数据接入模块,数据存储模块,数据计算模块,资源调度模块,集群监控模块组成,致力于完成数据存储、流计算、批处理、交互式分析等多种需求。本文将重点介绍大数据平台建设规划。业务系统数据接口是根据不同业务系统需求,对外暴露对应的数据接口提供数据。
1. 数据平台架构
数据平台按数据处理方式包含数据流处理和数据批处理两种方式,其中数据流处理采用 Storm 计算框架,目前建议只做简单逻辑处理,计算结果仅用作实时数据展示,后续技术成熟可加入实时 ML 模块。批处理针对于数据仓库,通过采集程序、对接业务系统或收集业务系统日志等数据,数据存储底层使用分布式文件系统 HDFS,基于多种业务需求构建数据仓库用于多维度数据分析。数据计算建议采用当下主流的计算引擎 Spark。对于非关系型数据通过代码逻辑进行处理,对于关系型数据采用 SQL 进行处理,如 SparkSQL,Hive,Kylin 等组件,计算结果写入支持后台应用程序快速读取的数据库。计算任务通过任务调度系统统一调度执行。数据平台安全机制采用主流的通过主机配置 kerberos 实现。集群资源监控使用自行开发的 XJManager,页面应包含组件名称及状态统计信息,主机健康信息,用户管理等模块,实现用户通过 Web 页面就可以安装配置大数据平台。项目整体架构如下图所示:
下边介绍各个模块:
2.1. 数据接入模块
包含传感器数据采集程序接入,使用 Flume 采集业务系统日志数据,对接其他业务系统数据库数据。对实时采集的数据使用 Kafka 作为缓冲。对于对接的业务系统数据如果有操作型数据可以构建 ODS 系统。用于数据分析的数据(含采集数据和对接业务数据)在 Hadoop 上构建数据仓库。
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. 集群监控模块
- 实现 ambari 页面汉化
- 修改 ambari 监控页面样式
- 实现 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、MapReduce2、YARN、Hive、Sqoop、Oozie、Zookeeper、Storm、Kafka、Flume、Spark 等。提前准备好对应版本的组件安装部署时从本地安装提升速度也更加稳定。
3.4. 一键部署脚本编写
目前离线安装 ambari 需要提前准备好 ambari、HDP、HDP-util 三个包构建本地 yum 源,然后通过 yum 安装 ambari-server,还需安装配置关系型数据库。过程相对于普通用户较为复杂,建议编写一键安装脚本,在服务器准备好之后(免密钥、关闭防火墙、时间同步等),只需运行脚本便可以实现在服务器上安装部署。
Hadoop 集群监控工具 Ambari 安装 http://www.linuxidc.com/Linux/2014-06/103208.htm
使用 Ambari 快速部署 Hadoop 大数据环境 http://www.linuxidc.com/Linux/2014-05/101531.htm
Ambari 服务配置以及 Alert 详解 http://www.linuxidc.com/Linux/2016-12/138149.htm
Ubuntu 14.04 上搭建 Ambari 清晰 PDF http://www.linuxidc.com/Linux/2016-01/126965.htm
CentOS 7 安装 Ambari2.4.0 图文详解 http://www.linuxidc.com/Linux/2016-12/138142.htm
CentOS 6.5 下使用 Ambari 安装 Hadoop 集群 http://www.linuxidc.com/Linux/2014-12/110824.htm
使用 Ambari 来部署 Hadoop 集群(搭建内网 HDP 源)http://www.linuxidc.com/Linux/2017-03/142136.htm
Ambari 安装指南图文详解 http://www.linuxidc.com/Linux/2017-03/141295.htm
CentOS 6.5+Ambari+HDP 集群安装 http://www.linuxidc.com/Linux/2017-03/141297.htm