大数据平台是对海量结构化, 非结构化, 半机构化数据进行采集, 存储, 计算, 统计, 分析处理的一系列技术平台. 大数据平台处理的数据量通常是 TB 级, 甚至是 PB 或 EB 级的数据, 这是传统数据仓库工具无法处理完成的, 其涉及的技术有分布式计算, 高并发处理, 高可用处理, 集群, 实时性计算等, 汇集了当前 IT 领域热门流行的各类技术.
此片文章整理出了大数据平台常见的一些开源工具, 并且依据其主要功能进行分类, 以便大数据学习者及应用者快速查找和参考.
大数据平台常见的一些工具汇集
主要包含: 语言工具类, 数据采集工具, ETL 工具, 数据存储工具, 分析计算, 查询应用及运维监控工具等. 以下对各工具作为简要的说明.
一, 语言工具类
1,Java 编程技术
Java 编程技术是目前使用最为广泛的网络编程语言之一, 是大数据学习的基础. Java 具有简单性, 面向对象, 分布式, 健壮性, 安全性, 平台独立与可移植性, 多线程, 动态性等特点, 拥有极高的跨平台能力, 是一种强类型语言, 可以编写桌面应用程序, web 应用程序, 分布式系统和嵌入式系统应用程序等, 是大数据工程师最喜欢的编程工具, 最重要的是, Hadoop 以及其他大数据处理技术很多都是用 Java, 因此, 想学好大数据, 掌握 Java 基础是必不可少的.
2,Linux 命令
对于大数据开发通常是在 Linux 环境下进行的, 相比 Linux 操作系统, Windows 操作系统是封闭的操作系统, 开源的大数据软件很受限制, 因此, 想从事大数据开发相关工作, 还需掌握 Linux 基础操作命令.
3,Scala
Scala 是一门多范式的编程语言, 一方面吸收继承了多种语言中的优秀特性, 一方面又没有抛弃 Java 这个强大的平台, 大数据开发重要框架 Spark 是采用 Scala 语言设计的, 想要学好 Spark 框架, 拥有 Scala 基础是必不可少的, 因此, 大数据开发需掌握 Scala 编程基础知识!
4,Python 与数据分析
Python 是面向对象的编程语言, 拥有丰富的库, 使用简单, 应用广泛, 在大数据领域也有所应用, 主要可用于数据采集, 数据分析以及数据可视化等, 因此, 大数据开发需学习一定的 Python 知识.
二, 数据采集类工具
1)Nutch 是一个开源 Java 实现的搜索引擎. 它提供了我们运行自己的搜索引擎所需的全部工具, 包括全文搜索和 Web 爬虫.
2)Scrapy 是一个为了爬取网站数据, 提取结构性数据而编写的应用框架, 可以应用在数据挖掘, 信息处理或存储历史数据等一系列的程序中. 大数据的采集需要掌握 Nutch 与 Scrapy 爬虫技术.
三, ETL 工具
1,Sqoop
Sqoop 是一个用于在 Hadoop 和关系数据库服务器之间传输数据的工具. 它用于从关系数据库 (如 MySQL,Oracle) 导入数据到 Hadoop HDFS, 并从 Hadoop 文件系统导出到关系数据库, 学习使用 Sqoop 对关系型数据库数据和 Hadoop 之间的导入有很大的帮助.
2,Kettle
Kettle 是一个 ETL 工具集, 它允许你管理来自不同数据库的数据, 通过提供一个图形化的用户环境来描述你想做什么, 而不是你想怎么做. 作为 Pentaho 的一个重要组成部分, 现在在国内项目应用上逐渐增多. 其数据抽取高效稳定.
四数据存储类工具
1,Hadoop 分布式存储与计算
Hadoop 实现了一个分布式文件系统(Hadoop Distributed File System), 简称 HDFS.Hadoop 的框架最核心的设计就是: HDFS 和 MapReduce.HDFS 为海量的数据提供了存储, MapReduce 则为海量的数据提供了计算, 因此, 需要重点掌握, 除此之外, 还需要掌握 Hadoop 集群, Hadoop 集群管理, YARN 以及 Hadoop 高级管理等相关技术与操作!
2,Hive
Hive 是基于 Hadoop 的一个数据仓库工具, 可以将结构化的数据文件映射为一张数据库表, 并提供简单的 SQL 查询功能, 可以将 SQL 语句转换为 MapReduce 任务进行运行. 相对于用 Java 代码编写 MapReduce 来说, Hive 的优势明显: 快速开发, 人员成本低, 可扩展性(自由扩展集群规模), 延展性(支持自定义函数). 十分适合数据仓库的统计分析. 对于 Hive 需掌握其安装, 应用及高级操作等.
3,ZooKeeper
ZooKeeper 是一个开源的分布式协调服务, 是 Hadoop 和 HBase 的重要组件, 是一个为分布式应用提供一致性服务的软件, 提供的功能包括: 配置维护, 域名服务, 分布式同步, 组件服务等, 在大数据开发中要掌握 ZooKeeper 的常用命令及功能的实现方法.
4,HBase
HBase 是一个分布式的, 面向列的开源数据库, 它不同于一般的关系数据库, 更适合于非结构化数据存储的数据库, 是一个高可靠性, 高性能, 面向列, 可伸缩的分布式存储系统, 大数据开发需掌握 HBase 基础知识, 应用, 架构以及高级用法等.
5,Redis
Redis 是一个 Key-Value 存储系统, 其出现很大程度补偿了 Memcached 这类 Key/Value 存储的不足, 在部分场合可以对关系数据库起到很好的补充作用, 它提供了 Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang 等客户端, 使用很方便, 大数据开发需掌握 Redis 的安装, 配置及相关使用方法.
6,Kafka
Kafka 是一种高吞吐量的分布式发布订阅消息系统, 其在大数据开发应用上的目的是通过 Hadoop 的并行加载机制来统一线上和离线的消息处理, 也是为了通过集群来提供实时的消息. 大数据开发需掌握 Kafka 架构原理及各组件的作用和使用方法及相关功能的实现.
7,Neo4j
Neo4j 是一个高性能的, NoSQL 图形数据库, 具有处理百万和 T 级节点和边的大尺度处理网络分析能力. 它是一个嵌入式的, 基于磁盘的, 具备完全的事务特性的 Java 持久化引擎, 但是它将结构化数据存储在网络 (从数学角度叫做图) 上而不是表中. Neo4j 因其嵌入式, 高性能, 轻量级等优势, 越来越受到关注.
8,Cassandra
Cassandra 是一个混合型的非关系的数据库, 类似于 Google 的 BigTable, 其主要功能比 Dynamo(分布式的 Key-Value 存储系统)更丰富. 这种 NoSQL 数据库最初由 Facebook 开发, 现已被 1500 多家企业组织使用, 包括苹果, 欧洲原子核研究组织(CERN), 康卡斯特, 电子港湾, GitHub,GoDaddy,Hulu,Instagram,Intuit,Netflix,Reddit 等. 是一种流行的分布式结构化数据存储方案.
9,SSM
SSM 框架是由 Spring,Spring MVC,MyBatis 三个开源框架整合而成, 常作为数据源较简单的 Web 项目的框架. 大数据开发需分别掌握 Spring,Spring MVC,MyBatis 三种框架的同时, 再使用 SSM 进行整合操作.
五, 分析计算类工具
1,Spark
Spark 是专为大规模数据处理而设计的快速通用的计算引擎, 其提供了一个全面, 统一的框架用于管理各种不同性质的数据集和数据源的大数据处理的需求, 大数据开发需掌握 Spark 基础, SparkJob,Spark RDD 部署与资源分配, Spark Shuffle,Spark 内存管理, Spark 广播变量, Spark SQL,Spark Streaming 以及 Spark ML 等相关知识.
2,Storm
Storm 是自由的开源软件, 一个分布式的, 容错的实时计算系统, 可以非常可靠的处理庞大的数据流, 用于处理 Hadoop 的批量数据. Storm 支持许多种编程语言, 并且有许多应用领域: 实时分析, 在线机器学习, 不停顿的计算, 分布式 RPC(远过程调用协议, 一种通过网路从远程计算机程序上请求服务),ETL 等等. Storm 的处理速度惊人: 经测试, 每个节点每秒钟可以处理 100 万个数据元组.
3,Mahout
Mahout 目的是 "为快速创建可扩展, 高性能的机器学习应用程序而打造一个环境", 主要特点是为可伸缩的算法提供可扩展环境, 面向 Scala/Spark/H2O/Flink 的新颖算法, Samsara(类似 R 的矢量数学环境), 它还包括了用于在 MapReduce 上进行数据挖掘的众多算法.
4,Pentaho
Pentaho 是世界上最流行的开源商务智能软件, 以工作流为核心的, 强调面向解决方案而非工具组件的, 基于 Java 平台的 BI 套件. 包括一个 Web Server 平台和几个工具软件: 报表, 分析, 图表, 数据集成, 数据挖掘等, 可以说包括了商务智能的方方面面. Pentaho 的工具可以连接到 NoSQL 数据库. 大数据开发需了解其使用方法.
5,HAWQ
HAWQ 是 Hadoop 原生 SQL 查询引擎, 为用户提供了一个完整的, 符合标准的 SQL 接口, 数据存储在 HDFS 上, 分布式运行, 可以查询 PB 级以上的数据, 查询性能高, 低延迟, 高可用, 对于 OLAP 分析是个不错的选择.
六, 查询应用类工具
1,Avro 与 Protobuf
Avro 与 Protobuf 均是数据序列化系统, 可以提供丰富的数据结构类型, 十分适合做数据存储, 还可进行不同语言之间相互通信的数据交换格式, 学习大数据, 需掌握其具体用法.
2,Phoenix
Phoenix 是用 Java 编写的基于 JDBC API 操作 HBase 的开源 SQL 引擎, 其具有动态列, 散列加载, 查询服务器, 追踪, 事务, 用户自定义函数, 二级索引, 命名空间映射, 数据收集, 时间戳列, 分页查询, 跳跃查询, 视图以及多租户的特性, 大数据开发需掌握其原理和使用方法.
3,Kylin
Kylin 是一个开源的分布式分析引擎, 提供了基于 Hadoop 的超大型数据集 (TB/PB 级别) 的 SQL 接口以及多维度的 OLAP 分布式联机分析. 最初由 eBay 开发并贡献至开源社区. 它能在亚秒内查询巨大的 Hive 表.
4,Zeppelin
Zeppelin 是一个提供交互数据分析且基于 Web 的笔记本. 方便你做出可数据驱动的, 可交互且可协作的精美文档, 并且支持多种语言, 包括 Scala(使用 Apache Spark),Python(Apache Spark),SparkSQL, Hive, Markdown,Shell 等.
5,Elasticsearch
Elasticsearch 是一个基于 Lucene 的搜索服务器. 它提供了一个分布式, 支持多用户的全文搜索引擎, 基于 RESTful Web 接口. Elasticsearch 是用 Java 开发的, 并作为 Apache 许可条款下的开放源码发布, 是当前流行的企业级搜索引擎. 设计用于云计算中, 能够达到实时搜索, 稳定, 可靠, 快速, 安装使用方便.
6,Solr
Solr 基于 Apache Lucene, 是一种高度可靠, 高度扩展的企业搜索平台, 是一款非常优秀的全文搜索引擎. 知名用户包括 eHarmony, 西尔斯, StubHub,Zappos, 百思买, AT&T,Instagram,Netflix, 彭博社和 Travelocity. 大数据开发需了解其基本原理和使用方法.
七, 数据管理类工具
1,Azkaban
Azkaban 是由 linked 开源的一个批量工作流任务调度器, 它是由三个部分组成: Azkaban Web Server(管理服务器),Azkaban Executor Server(执行管理器)和 MySQL(关系数据库), 可用于在一个工作流内以一个特定的顺序运行一组工作和流程, 可以利用 Azkaban 来完成大数据的任务调度, 大数据开发需掌握 Azkaban 的相关配置及语法规则.
2,Mesos
Mesos 是由加州大学伯克利分校的 AMPLab 首先开发的一款开源集群管理软件, 支持 Hadoop,Elasticsearch,Spark,Storm 和 Kafka 等架构. 对数据中心而言它就像一个单一的资源池, 从物理或虚拟机器中抽离了 CPU, 内存, 存储以及其它计算资源, 很容易建立和有效运行具备容错性和弹性的分布式系统.
3,Sentry
Sentry 是一个开源的实时错误报告工具, 支持 Web 前后端, 移动应用以及游戏, 支持 Python,OC,Java,Go,Node,Django,Ruby on Rails 等主流编程语言和框架 , 还提供了 GitHub,Slack,Trello 等常见开发工具的集成. 使用 Sentry 对数据安全管理很有帮助.
八, 运维监控类工具
Flume 是一款高可用, 高可靠, 分布式的海量日志采集, 聚合和传输的系统, Flume 支持在日志系统中定制各类数据发送方, 用于收集数据; 同时, Flume 提供对数据进行简单处理, 并写到各种数据接受方 (可定制) 的能力. 大数据开发需掌握其安装, 配置以及相关使用方法.
来源: http://bigdata.51cto.com/art/201904/594654.htm