大數據平臺最常用的30款開源工具

大數據平臺是對海量結構化、非結構化、半機構化數據進行採集、存儲、計算、統計、分析處理的一系列技術平臺。大數據平臺處理的數據量通常是TB級,甚至是PB或EB級的數據,這是傳統數據倉庫工具無法處理完成的,其涉及的技術有分佈式計算、高併發處理、高可用處理、集羣、實時性計算等,彙集了當前IT領域熱門流行的各類技術。

本文整理出了大數據平臺常見的一些開源工具,並且依據其主要功能進行分類,以便大數據學習者及應用者快速查找和參考。

▲ 大數據平臺常見的一些工具彙集

主要包含:語言工具類、數據採集工具、ETL工具、數據存儲工具、分析計算、查詢應用及運維監控工具等。以下對各工具作爲簡要的說明。

一、語言工具類

1、Java編程技術

Java編程技術是目前使用最爲廣泛的網絡編程語言之一,是大數據學習的基礎。

Java具有簡單性、面向對象、分佈式、健壯性、安全性、平臺獨立與可移植性、多線程、動態性等特點,擁有極高的跨平臺能力,是一種強類型語言。可以編寫桌面應用程序、Web應用程序、分佈式系統和嵌入式系統應用程序等,是大數據工程師最喜歡的編程工具。

最重要的是,Hadoop以及其他大數據處理技術很多都是用Java。因此,想學好大數據,掌握Java基礎是必不可少的。

在這裏還是要推薦下我自己建的大數據學習交流羣:251956502,羣裏都是學大數據開發的,如果你正在學習大數據 ,小編歡迎你加入,大家都是軟件開發黨,不定期分享乾貨(只有大數據軟件開發相關的),包括我自己整理的一份最新的大數據進階資料和高級開發教程,歡迎進階中和進想深入大數據的小夥伴加入。

2、Linux命令

許多大數據開發通常是在Linux環境下進行的,相比Linux操作系統,Windows操作系統是封閉的操作系統,開源的大數據軟件很受限制。因此,想從事大數據開發相關工作,還需掌握Linux基礎操作命令。

3、Scala

Scala是一門多範式的編程語言,一方面繼承了多種語言中的優秀特性,一方面又沒有拋棄 Java 這個強大的平臺。大數據開發重要框架Spark就是採用Scala語言設計的,想要學好Spark框架,擁有Scala基礎是必不可少的。因此,大數據開發需掌握Scala編程基礎知識!

4、Python與數據分析

Python是面向對象的編程語言,擁有豐富的庫,使用簡單,應用廣泛,在大數據領域也有所應用,主要可用於數據採集、數據分析以及數據可視化等。因此,大數據開發需學習一定的Python知識。

二、 數據採集類工具

1、Nutch

Nutch是一個開源Java實現的搜索引擎。它提供了我們運行自己的搜索引擎所需的全部工具,包括全文搜索和Web爬蟲。

2、Scrapy

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,Java,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數據庫。大數據開發需瞭解其使用方法。

六、 查詢應用類工具

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、RoR 等主流編程語言和框架 ,還提供了 GitHub、Slack、Trello 等常見開發工具的集成。使用Sentry對數據安全管理很有幫助。

八、 運維監控類工具

Flume是一款高可用、高可靠、分佈式的海量日誌採集、聚合和傳輸的系統,Flume支持在日誌系統中定製各類數據發送方,用於收集數據;同時,Flume提供對數據進行簡單處理,並寫到各種數據接受方(可定製)的能力。大數據開發需掌握其安裝、配置以及相關使用方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章