導讀:ios
第一章:初識Hadoop
第二章:更高效的WordCount
第三章:把別處的數據搞到Hadoop上
第四章:把Hadoop上的數據搞到別處去
第五章:快一點吧,個人SQL
第六章:一夫多妻制
第七章:愈來愈多的分析任務
第八章:個人數據要實時
第九章:個人數據要對外
第十章:牛逼高大上的機器學習數據庫
常常有初學者在博客和QQ問我,本身想往大數據方向發展,該學哪些技術,學習路線是什麼樣的,以爲大數據很火,就業很好,薪資很高。。。。。。。若是本身很迷茫,爲了這些緣由想往大數據方向發展,也能夠,那麼我就想問一下,你的專業是什麼,對於計算機/軟件,你的興趣是什麼?是計算機專業,對操做系統、硬件、網絡、服務器感興趣?是軟件專業,對軟件開發、編程、寫代碼感興趣?仍是數學、統計學專業,對數據和數字特別感興趣。。
其實這就是想告訴你的大數據的三個發展方向,平臺搭建/優化/運維/監控、大數據開發/設計/架構、數據分析/挖掘。請不要問我哪一個容易,哪一個前景好,哪一個錢多。
先扯一下大數據的4V特徵:編程
現現在,正式爲了應對大數據的這幾個特色,開源的大數據框架愈來愈多,愈來愈強,先列舉一些常見的:
文件存儲:Hadoop HDFS、Tachyon、KFS
離線計算:Hadoop MapReduce、Spark
流式、實時計算:Storm、Spark Streaming、S四、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多種吧,別說精通了,所有都會使用的,估計也沒幾個。
就我我的而言,主要經驗是在第二個方向(開發/設計/架構),且聽聽個人建議吧。網絡
不論遇到什麼問題,先試試搜索並本身解決。
Google首選,翻不過去的,就用百度吧。架構
特別是對於入門來講,官方文檔永遠是首選文檔。
相信搞這塊的大可能是文化人,英文湊合就行,實在看不下去的,請參考第一步。框架
Hadoop能夠算是大數據存儲和計算的開山鼻祖,如今大多開源的大數據框架都依賴Hadoop或者與它能很好的兼容。運維
關於Hadoop,你至少須要搞清楚如下是什麼:機器學習
本身搭建Hadoop,請使用第一步和第二步,能讓它跑起來就行。
建議先使用安裝包命令行安裝,不要使用管理工具安裝。
另外:Hadoop1.0知道它就好了,如今都用Hadoop 2.0.分佈式
HDFS目錄操做命令;
上傳、下載文件命令;
提交運行MapReduce示例程序;
打開Hadoop WEB界面,查看Job運行狀態,查看Job運行日誌。
知道Hadoop的系統日誌在哪裏。
MapReduce:如何分而治之;
HDFS:數據到底在哪裏,什麼是副本;
Yarn究竟是什麼,它能幹什麼;
NameNode到底在幹些什麼;
ResourceManager到底在幹些什麼;
請仿照WordCount例子,本身寫一個(照抄也行)WordCount程序,
打包並提交到Hadoop運行。
你不會Java?Shell、Python均可以,有個東西叫Hadoop Streaming。
若是你認真完成了以上幾步,恭喜你,你的一隻腳已經進來了。
你知道數據庫嗎?你會寫SQL嗎?
若是不會,請學點SQL吧。
在1.6中,你寫(或者抄)的WordCount一共有幾行代碼?
給你看看個人:
SELECT word,COUNT(1) FROM wordcount GROUP BY word;
這即是SQL的魅力,編程須要幾十行,甚至上百行代碼,我這一句就搞定;使用SQL處理分析Hadoop上的數據,方便、高效、易上手、更是趨勢。不管是離線計算仍是實時計算,愈來愈多的大數據處理框架都在積極提供SQL接口。
什麼是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適合作海量數據的數據倉庫工具,而不是數據庫工具。
請參考1.1 和 1.2 完成Hive的安裝配置。能夠正常進入Hive命令行。
請參考1.1 和 1.2 ,在Hive中建立wordcount表,並運行2.2中的SQL語句。
在Hadoop WEB界面中找到剛纔運行的SQL任務。
看SQL查詢結果是否和1.4中MapReduce中的結果一致。
明明寫的是SQL,爲何Hadoop WEB界面中看到的是MapReduce任務?
建立、刪除表;
加載數據到表;
下載Hive表的數據;
請參考1.2,學習更多關於Hive的語法和命令。
若是你認真完成了以上幾步,恭喜你,你的半條腿已經進來了。