<small id='sv8sc1ro'></small><noframes id='o63m0s7n'>

    <tfoot id='h3vesgn9'></tfoot>
      <tbody id='84gmh3ua'></tbody>

    <i id='ry57dknn'><tr id='iqsbo18q'><dt id='cj2rtm5g'><q id='kvp33b7v'><span id='7gsjyohn'><b id='tvtpfj2k'><form id='79p3307f'><ins id='z3kpxc3r'></ins><ul id='vmocno0r'></ul><sub id='hldninhu'></sub></form><legend id='v2j2bxr7'></legend><bdo id='jkzmo72r'><pre id='04348rn5'><center id='fsdenb9e'></center></pre></bdo></b><th id='daxh26i3'></th></span></q></dt></tr></i><div id='qi5dalk7'><tfoot id='qk47oim2'></tfoot><dl id='bb0wx1d6'><fieldset id='680b738d'></fieldset></dl></div>
  • <legend id='uqpxoq9p'><style id='hvu3u83m'><dir id='6qf5subu'><q id='pa1qqzq0'></q></dir></style></legend>
      網站建設公司當前位置 : 網站建設公司 > 知識普及

      大數據開發初學者學習路線

      發布時間:2021-12-07 14:40   瀏覽次數:次   
      經常有初學者在博客和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的安裝配置??梢哉_M入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的語法和命令。
       
      如果你已經按照《寫給大數據開發初學者的話》中第一章和第二章的流程認真完整的走了一遍,那么你應該已經具備以下技能和知識點:
       
      0和Hadoop2.0的區別;
       
      MapReduce的原理(還是那個經典的題目,一個10G大小的文件,給定1G大小的內存,如何使用Java程序統計出現次數最多的10個單詞及次數);
       
      HDFS讀寫數據的流程;向HDFS中PUT數據;從HDFS中下載數據;
       
      自己會寫簡單的MapReduce程序,運行出現問題,知道在哪里查看日志;
       
      會寫簡單的SELECT、WHERE、GROUP BY等SQL語句;
       
      Hive SQL轉換成MapReduce的大致流程;
       
      Hive中常見的語句:創建表、刪除表、往表中加載數據、分區、將表中數據下載到本地;
       
      從上面的學習,你已經了解到,HDFS是Hadoop提供的分布式存儲框架,它可以用來存儲海量數據,MapReduce是Hadoop提供的分布式計算框架,它可以用來統計和分析HDFS上的海量數據,而Hive則是SQL On Hadoop,Hive提供了SQL接口,開發人員只需要編寫簡單易上手的SQL語句,Hive負責把SQL翻譯成MapReduce,提交運行。
       
      此時,你的”大數據平臺”是這樣的:
      這里寫圖片描述
       
      那么問題來了,海量數據如何到HDFS上呢?
       
      第三章:把別處的數據搞到Hadoop上
      此處也可以叫做數據采集,把各個數據源的數據采集到Hadoop上。
       
      3.1 HDFS PUT命令
       
      這個在前面你應該已經使用過了。
       
      put命令在實際環境中也比較常用,通常配合shell、python等腳本語言來使用。
       
      建議熟練掌握。
       
      3.2 HDFS API
       
      HDFS提供了寫數據的API,自己用編程語言將數據寫入HDFS,put命令本身也是使用API。
       
      實際環境中一般自己較少編寫程序使用API來寫數據到HDFS,通常都是使用其他框架封裝好的方法。比如:Hive中的INSERT語句,Spark中的saveAsTextfile等。
       
      建議了解原理,會寫Demo。
       
      3.3 Sqoop
       
      Sqoop是一個主要用于Hadoop/Hive與傳統關系型數據庫
       
      Oracle/MySQL/SQLServer等之間進行數據交換的開源框架。
       
      就像Hive把SQL翻譯成MapReduce一樣,Sqoop把你指定的參數翻譯成MapReduce,提交到Hadoop運行,完成Hadoop與其他數據庫之間的數據交換。
       
      自己下載和配置Sqoop(建議先使用Sqoop1,Sqoop2比較復雜)。
       
      了解Sqoop常用的配置參數和方法。
       
      使用Sqoop完成從MySQL同步數據到HDFS;
      使用Sqoop完成從MySQL同步數據到Hive表;
       
      PS:如果后續選型確定使用Sqoop作為數據交換工具,那么建議熟練掌握,否則,了解和會用Demo即可。
       
      3.4 Flume
       
      Flume是一個分布式的海量日志采集和傳輸框架,因為“采集和傳輸框架”,所以它并不適合關系型數據庫的數據采集和傳輸。
       
      Flume可以實時的從網絡協議、消息系統、文件系統采集日志,并傳輸到HDFS上。
       
      因此,如果你的業務有這些數據源的數據,并且需要實時的采集,那么就應該考慮使用Flume。
       
      下載和配置Flume。
       
      使用Flume監控一個不斷追加數據的文件,并將數據傳輸到HDFS;
       
      PS:Flume的配置和使用較為復雜,如果你沒有足夠的興趣和耐心,可以先跳過Flume。
       
      3.5 阿里開源的DataX
       
      之所以介紹這個,是因為我們公司目前使用的Hadoop與關系型數據庫數據交換的工具,就是之前基于DataX開發的,非常好用。
       
      可以參考我的博文《異構數據源海量數據交換工具-Taobao DataX 下載和使用》。
       
      現在DataX已經是3.0版本,支持很多數據源。
       
      你也可以在其之上做二次開發。
       
      PS:有興趣的可以研究和使用一下,對比一下它與Sqoop。
       
      如果你認真完成了上面的學習和實踐,此時,你的”大數據平臺”應該是這樣的:
      這里寫圖片描述
       
      第四章:把Hadoop上的數據搞到別處去
      前面介紹了如何把數據源的數據采集到Hadoop上,數據到Hadoop上之后,便可以使用Hive和MapReduce進行分析了。那么接下來的問題是,分析完的結果如何從Hadoop上同步到其他系統和應用中去呢?
       
      其實,此處的方法和第三章基本一致的。
       
      4.1 HDFS GET命令
       
      把HDFS上的文件GET到本地。需要熟練掌握。
       
      4.2 HDFS API
       
      同3.2.
       
      4.3 Sqoop
       
      同3.3.
       
      使用Sqoop完成將HDFS上的文件同步到MySQL;
      使用Sqoop完成將Hive表中的數據同步到MySQL;
       
      4.4 DataX
       
      同3.5.
       
      如果你認真完成了上面的學習和實踐,此時,你的”大數據平臺”應該是這樣的:
      這里寫圖片描述
       
      如果你已經按照《寫給大數據開發初學者的話2》中第三章和第四章的流程認真完整的走了一遍,那么你應該已經具備以下技能和知識點:
       
      知道如何把已有的數據采集到HDFS上,包括離線采集和實時采集;
       
      你已經知道sqoop(或者還有DataX)是HDFS和其他數據源之間的數據交換工具;
       
      你已經知道flume可以用作實時的日志采集。
       
      從前面的學習,對于大數據平臺,你已經掌握的不少的知識和技能,搭建Hadoop集群,把數據采集到Hadoop上,使用Hive和MapReduce來分析數據,把分析結果同步到其他數據源。
       
      接下來的問題來了,Hive使用的越來越多,你會發現很多不爽的地方,特別是速度慢,大多情況下,明明我的數據量很小,它都要申請資源,啟動MapReduce來執行。
       
      第五章:快一點吧,我的SQL
      其實大家都已經發現Hive后臺使用MapReduce作為執行引擎,實在是有點慢。
       
      因此SQL On Hadoop的框架越來越多,按我的了解,最常用的按照流行度依次為SparkSQL、Impala和Presto.
       
      這三種框架基于半內存或者全內存,提供了SQL接口來快速查詢分析Hadoop上的數據。關于三者的比較,請參考1.1.
       
      我們目前使用的是SparkSQL,至于為什么用SparkSQL,原因大概有以下吧:
       
      使用Spark還做了其他事情,不想引入過多的框架;
       
      Impala對內存的需求太大,沒有過多資源部署;
       
      5.1 關于Spark和SparkSQL
       
      什么是Spark,什么是SparkSQL。
      Spark有的核心概念及名詞解釋。
      SparkSQL和Spark是什么關系,SparkSQL和Hive是什么關系。
      SparkSQL為什么比Hive跑的快。
       
      5.2 如何部署和運行SparkSQL
       
      Spark有哪些部署模式?
      如何在Yarn上運行SparkSQL?
      使用SparkSQL查詢Hive中的表。
       
      PS: Spark不是一門短時間內就能掌握的技術,因此建議在了解了Spark之后,可以先從SparkSQL入手,循序漸進。
       
      關于Spark和SparkSQL,可參考
       
      http://lxw1234.com/archives/category/spark
       
      如果你認真完成了上面的學習和實踐,此時,你的”大數據平臺”應該是這樣的:
      這里寫圖片描述
       
      第六章:一夫多妻制
      請不要被這個名字所誘惑。其實我想說的是數據的一次采集、多次消費。
       
      在實際業務場景下,特別是對于一些監控日志,想即時的從日志中了解一些指標(關于實時計算,后面章節會有介紹),這時候,從HDFS上分析就太慢了,盡管是通過Flume采集的,但Flume也不能間隔很短就往HDFS上滾動文件,這樣會導致小文件特別多。
       
      為了滿足數據的一次采集、多次消費的需求,這里要說的便是Kafka。
       
      6.1 關于Kafka
       
      什么是Kafka?
       
      Kafka的核心概念及名詞解釋。
       
      6.2 如何部署和使用Kafka
       
      使用單機部署Kafka,并成功運行自帶的生產者和消費者例子。
       
      使用Java程序自己編寫并運行生產者和消費者程序。
       
      Flume和Kafka的集成,使用Flume監控日志,并將日志數據實時發送至Kafka。
       
      如果你認真完成了上面的學習和實踐,此時,你的”大數據平臺”應該是這樣的:
      這里寫圖片描述
       
      這時,使用Flume采集的數據,不是直接到HDFS上,而是先到Kafka,Kafka中的數據可以由多個消費者同時消費,其中一個消費者,就是將數據同步到HDFS。
       
      如果你已經按照《寫給大數據開發初學者的話3》中第五章和第六章的流程認真完整的走了一遍,那么你應該已經具備以下技能和知識點:
       
      為什么Spark比MapReduce快。
       
      使用SparkSQL代替Hive,更快的運行SQL。
       
      使用Kafka完成數據的一次收集,多次消費架構。
       
      自己可以寫程序完成Kafka的生產者和消費者。
       
      從前面的學習,你已經掌握了大數據平臺中的數據采集、數據存儲和計算、數據交換等大部分技能,而這其中的每一步,都需要一個任務(程序)來完成,各個任務之間又存在一定的依賴性,比如,必須等數據采集任務成功完成后,數據計算任務才能開始運行。如果一個任務執行失敗,需要給開發運維人員發送告警,同時需要提供完整的日志來方便查錯。
      <legend id='hevozs8c'><style id='l2j6ftik'><dir id='6ynza84l'><q id='jdj5dtci'></q></dir></style></legend>

      <tfoot id='3wvut4t6'></tfoot>

      <small id='6jrijyba'></small><noframes id='5fo1lpj4'>

          <tbody id='lxnumqyx'></tbody>
            <i id='gscw855a'><tr id='hhq3j3nj'><dt id='w8dt1j96'><q id='k9bjevzj'><span id='u7sijm6u'><b id='zuwnau3p'><form id='03foarrx'><ins id='zw1kcdn1'></ins><ul id='2x3g04ss'></ul><sub id='vthpd9ht'></sub></form><legend id='12vg2svn'></legend><bdo id='ppc47wky'><pre id='ani7ftbo'><center id='64wf1zrm'></center></pre></bdo></b><th id='n97buk5l'></th></span></q></dt></tr></i><div id='j8ra7zbh'><tfoot id='5250fo97'></tfoot><dl id='lw5tpvyu'><fieldset id='752bdl2u'></fieldset></dl></div>
          • 本文來源于網絡,若有侵權請聯系3449817223#qq.com,將在第一時間刪除。

            下一篇公眾號開發下一篇:沒有了
            <i id='0nth3o3h'><tr id='jz6bu1to'><dt id='3kw438vl'><q id='g6oko43e'><span id='1xh79754'><b id='2eniame9'><form id='0wd9o8on'><ins id='t1dm8a1s'></ins><ul id='xd86laki'></ul><sub id='wow1ntih'></sub></form><legend id='hj6n6apr'></legend><bdo id='chzq8yiy'><pre id='x0wodgpd'><center id='tjazq4z3'></center></pre></bdo></b><th id='lweun3aa'></th></span></q></dt></tr></i><div id='twi0ha9i'><tfoot id='4f6xo1re'></tfoot><dl id='d1vfl3no'><fieldset id='8ld5bimq'></fieldset></dl></div>
          • <legend id='utvhywgb'><style id='wj7rflyc'><dir id='08f10jki'><q id='uil6r4uj'></q></dir></style></legend>

            <small id='q2esd787'></small><noframes id='bsq196i9'>

              • <tfoot id='zi9aam08'></tfoot>

                  <tbody id='sqvlc5r2'></tbody>
                人妻丰满熟妇av无码区AAP