前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。
導讀:
第一章:初識Hadoop
第二章:更高效的WordCount
第三章:把別處的數據搞到Hadoop上
第四章:把Hadoop上的數據搞到別處去
第五章:快一點吧,我的SQL
第六章:一夫多妻制
第七章:越來越多的分析任務
第八章:我的數據要實時
第九章:我的數據要對外
第十章:牛逼高大上的機器學習
經常有初學者在博客和QQ問我,自己想往大數據方向發展,該學哪些技術,學習路線是什么樣的,覺得大數據很火,就業很好,薪資很高。。。。。。。如果自己很迷茫,為了這些原因想往大數據方向發展,也可以,那么我就想問一下,你的專業是什么,對于計算機/軟件,你的興趣是什么?是計算機專業,對操作系統、硬件、網絡、服務器感興趣?是軟件專業,對軟件開發、編程、寫代碼感興趣?還是數學、統計學專業,對數據和數字特別感興趣。。
其實這就是想告訴你的大數據的三個發展方向,平臺搭建/優化/運維/監控、大數據開發/設計/架構、數據分析/挖掘。請不要問我哪個容易,哪個前景好,哪個錢多。
先扯一下大數據的4V特征:
- 數據量大,TB->PB
- 數據類型繁多,結構化、非結構化文本、日志、視頻、圖片、地理位置等;
- 商業價值高,但是這種價值需要在海量數據之上,通過數據分析與機器學習更快速的挖掘出來;
- 處理時效性高,海量數據的處理需求不再局限在離線計算當中。
?
現如今,正式為了應對大數據的這幾個特點,開源的大數據框架越來越多,越來越強,先列舉一些常見的:
文件存儲:Hadoop HDFS、Tachyon、KFS
離線計算:Hadoop MapReduce、Spark
流式、實時計算:Storm、Spark Streaming、S4、Heron
K-V、NOSQL數據庫:HBase、Redis、MongoDB
資源管理:YARN、Mesos
日志收集:Flume、Scribe、Logstash、Kibana
消息系統:Kafka、StormMQ、ZeroMQ、RabbitMQ
查詢分析:Hive、Impala、Pig、Presto、Phoenix、SparkSQL、Drill、Flink、Kylin、Druid
分布式協調服務:Zookeeper
集群管理與監控:Ambari、Ganglia、Nagios、Cloudera Manager
數據挖掘、機器學習:Mahout、Spark MLLib
數據同步:Sqoop
任務調度:Oozie
……
?
眼花了吧,上面的有30多種吧,別說精通了,全部都會使用的,估計也沒幾個。
就我個人而言,主要經驗是在第二個方向(開發/設計/架構),且聽聽我的建議吧。
第一章:初識Hadoop
1.1 學會百度與Google
不論遇到什么問題,先試試搜索并自己解決。
Google首選,翻不過去的,就用百度吧。
1.2 參考資料首選官方文檔
特別是對于入門來說,官方文檔永遠是首選文檔。
相信搞這塊的大多是文化人,英文湊合就行,實在看不下去的,請參考第一步。
1.3 先讓Hadoop跑起來
Hadoop可以算是大數據存儲和計算的開山鼻祖,現在大多開源的大數據框架都依賴Hadoop或者與它能很好的兼容。
關于Hadoop,你至少需要搞清楚以下是什么:
- Hadoop 1.0、Hadoop 2.0
- MapReduce、HDFS
- NameNode、DataNode
- JobTracker、TaskTracker
- Yarn、ResourceManager、NodeManager
自己搭建Hadoop,請使用第一步和第二步,能讓它跑起來就行。
建議先使用安裝包命令行安裝,不要使用管理工具安裝。
另外:Hadoop1.0知道它就行了,現在都用Hadoop 2.0.
1.4 試試使用Hadoop
HDFS目錄操作命令;
上傳、下載文件命令;
提交運行MapReduce示例程序;
打開Hadoop WEB界面,查看Job運行狀態,查看Job運行日志。
知道Hadoop的系統日志在哪里。
1.5 你該了解它們的原理了
MapReduce:如何分而治之;
HDFS:數據到底在哪里,什么是副本;
Yarn到底是什么,它能干什么;
NameNode到底在干些什么;
ResourceManager到底在干些什么;
1.6 自己寫一個MapReduce程序
請仿照WordCount例子,自己寫一個(照抄也行)WordCount程序,
打包并提交到Hadoop運行。
你不會Java?Shell、Python都可以,有個東西叫Hadoop Streaming。
如果你認真完成了以上幾步,恭喜你,你的一只腳已經進來了。
?
第二章:更高效的WordCount
2.1 學點SQL吧
你知道數據庫嗎?你會寫SQL嗎?
如果不會,請學點SQL吧。
2.2 SQL版WordCount
在1.6中,你寫(或者抄)的WordCount一共有幾行代碼?
給你看看我的:
SELECT word,COUNT(1) FROM wordcount GROUP BY word;
這便是SQL的魅力,編程需要幾十行,甚至上百行代碼,我這一句就搞定;使用SQL處理分析Hadoop上的數據,方便、高效、易上手、更是趨勢。不論是離線計算還是實時計算,越來越多的大數據處理框架都在積極提供SQL接口。
2.3 SQL On Hadoop之Hive
什么是Hive?官方給的解釋是:
The Apache Hive data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage and queried using SQL syntax.
為什么說Hive是數據倉庫工具,而不是數據庫工具呢?有的朋友可能不知道數據倉庫,數據倉庫是邏輯上的概念,底層使用的是數據庫,數據倉庫中的數據有這兩個特點:最全的歷史數據(海量)、相對穩定的;所謂相對穩定,指的是數據倉庫不同于業務系統數據庫,數據經常會被更新,數據一旦進入數據倉庫,很少會被更新和刪除,只會被大量查詢。而Hive,也是具備這兩個特點,因此,Hive適合做海量數據的數據倉庫工具,而不是數據庫工具。
2.4 安裝配置Hive
請參考1.1 和 1.2 完成Hive的安裝配置。可以正常進入Hive命令行。
2.5 試試使用Hive
請參考1.1 和 1.2 ,在Hive中創建wordcount表,并運行2.2中的SQL語句。
在Hadoop WEB界面中找到剛才運行的SQL任務。
看SQL查詢結果是否和1.4中MapReduce中的結果一致。
2.6 Hive是怎么工作的
明明寫的是SQL,為什么Hadoop WEB界面中看到的是MapReduce任務?
2.7 學會Hive的基本命令
創建、刪除表;
加載數據到表;
下載Hive表的數據;
請參考1.2,學習更多關于Hive的語法和命令。
如果你認真完成了以上幾步,恭喜你,你的半條腿已經進來了。
?寫給大數據開發初學者的話
?
寫給大數據開發初學者的話2
?
第三章:把別處的數據搞到Hadoop上
第四章:把Hadoop上的數據搞到別處去
寫給大數據開發初學者的話3
第五章:快一點吧,我的SQL
第六章:一夫多妻制
寫給大數據開發初學者的話4
第七章:越來越多的分析任務
第八章:我的數據要實時
寫給大數據開發初學者的話5
第九章:我的數據要對外
第十章:牛逼高大上的機器學習
?