<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          從事大數據崗位,個人常用的Apache頂級項目

          共 2417字,需瀏覽 5分鐘

           ·

          2021-03-08 16:05


          導讀

          年前,個人換了大數據崗位,目前主要從事大數據分析和大數據算法相關工作。在前期數據分析師崗位的基礎上,雖然只是增加了一個"大"字作為前綴,但所涉及的技術棧和工作理念其實還是有很大變化的,其中打交道最為頻繁的當從一個關鍵詞說起:Apache


          Apache:世界上最大的開源軟件基金會


          01 關于Apache

          Apache是一個成立于1999年的非盈利性組織,其所屬軟件基金會(ASF:Apache Software Foundation)致力于為開源軟件項目(前提是該項目已列入到Apache項目)提供服務和支持,得益于其良好的管理和宏偉的愿景,Apache目前是世界上最大的開源軟件基金會組織。當然,Apache軟件基金會的資金主要來源于個人和企業(yè)的捐助。

          以上截圖源于Apache官網


          從中可以看到這樣一組數字:

          • 維護350+個項目和提案

          • 300+頂級項目

          • 管理227M+行代碼(2.27億+)

          • 4.2B+行代碼更改(42億+)

          • 3.9M+代碼提交(390萬+)

          • 社區(qū)參與人數46萬+

          • ……


          作為一名程序員,看到這些以K、M、B(billion)來計數的內容,總是難免心生波瀾心存敬畏……更重要的是不僅數量龐大,而且Apache所涉獵領域還眾多,按照Apache官網分類有27個子類,我個人日常工作中涉及到的主要是big-data所在分類,所以本文就來簡要介紹一下幾個常用的Apache頂級項目,大多屬于大數據范疇。


          02 頻繁打交道的幾個Apache頂級項目

          個人目前從事工作內容包括大數據分析、大數據算法以及部分大數據開發(fā)相關,所用到的技術棧主要包括:

          1)Hadoop:提起大數據想必人人皆知Hadoop,狹義的講,hadoop是yarn資源調度+hdfs分布式存儲+mapreduce兩階段分布式計算的技術集成;廣義的講,hadoop其實已經代表了以hadoop為核心的一套大數據技術生態(tài),除了hadoop自身,還包括Hbase列式存儲、Hive數倉、Spark分布式計算等等。在實際工作中,用到的主要是其hdfs存儲和yarn資源調度功能;


          2)Hive:大數據的核心是存儲和計算,hadoop的hdfs提供了底層的分布式文件存儲,而對這些存儲映射為結構化數據并提供類SQL查詢的組件則是Hive,其與關系型數據庫(RDB)在數據方式和查詢語法上都較為相近,但同時又有著很多本質上的區(qū)別:例如Hive是OLAP(面向主題),記錄了大量歷史數據,可能存在重復和冗余,主要操作是插入和查詢數據;而關系型數據庫則是OLTP(面向事務),實時記錄了最新數據,一般遵循數據庫設計6大范式(至少遵循前3個范式),全面支持增刪改查。正因為Hive的HQL語法與常用的SQL語法極為相近,所以學習成本較低,使用起來更容易上手;


          3)Spark:Hive提供了一定的數據分析能力,但在執(zhí)行效率和功能方面都還存有一定短板,所以Spark出于Hive而勝于Hive(Spark的早期版本Shark是基于Hive的)應運而生,由于采用了內存式計算設計,相較于Hadoop中的MapReduce兩階段計算框架而言,有著上百倍的效率提升,更重要的Spark支持4種語言API(Java、Scala、Python和R),對標數據處理階段涵蓋批處理、流處理、機器學習以及圖計算,可謂是提供了多語言一站式分布式計算方案,使用起來還是較為方便的;


          4)Parquet:parquet實際上只是一種數據存儲文件格式,具有較高的壓縮比,所以存儲體積更為小巧。其標志性特點就是列式存儲,讀取和存儲的parquet文件自帶Schema信息,但是要求不能存在列名重復。與txt、csv類的通用文件格式不同,parquet文件可能也算是大數據中的一個標志性文件類型,甚至稱的上是文件存儲格式的標準;


          5)Maven:maven是一個項目構建工具,個人在構建Scala項目中會有所應用。通過Maven構建的Scala項目,其最大的優(yōu)勢在于項目文件目錄更為清晰,嚴格按照src-main/test-scala類的格式建立和管理項目文件,更重要的是通過配置pom文件,可方便的管理項目中的依賴,實現自動下載和導入,使用起來更為簡潔方便。



          6)Zeppelin:用Python做數據分析的應該都知道Jupyter,與之類似,用Spark做數據EDA的最好工具當屬Zeppelin:通過設置不同的解釋器路徑,可以提供一個多語言的交互式分析環(huán)境,包括spark的各語言環(huán)境、scala、python以及SQL等,在SQL解釋器下還支持簡單的數據可視化能力。不過坦白的講,對于習慣了jupyter的用戶而言,可能會覺得zeppelin的快捷鍵支持和界面功能方面都還有待提升;

          當前zeppelin最新版本為0.9.0


          7)Airflow:Airflow是一個調度管理工具(因其最早源于Airbnb公司,所以名字含有air),現也是Apache頂級項目,功能有些類似于linux下的定時任務調度工具crontab,但功能更為完備,包括提供了多種類型調度任務、可通過WEB UI便捷管理、支持分布式多節(jié)點執(zhí)行等。個人目前將其余mlflow配套使用,共同完成從數據預處理到特征構建直至算法建模輸出整個流程的調度使用,目前仍在持續(xù)探索中。


          相關閱讀:


          瀏覽 105
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩三级片电影网站 | 黄色AV毛片 | 色欲AV免费看 | 淫色一非一区二区朝鲜 | 国产日本在线视频 |