派拉培訓-大數據(一)

大數據介紹

大量,高速,多樣,真實,價值

HDFS:分佈式文件系統
MAPREDUCE:分佈式運算程序開發框架
HIVE:基於大數據技術(文件系統+運算框架)的SQL數據倉庫工具
HBASE:基於HADOOP的分佈式海量數據庫
ZOOKEEPER:分佈式協調服務基礎組件
Mahout:基於mapreduce/spark/flink等分佈式運算框架的機器學習算法庫
Oozie:工作流調度框架
Sqoop:數據導入導出

Hive數據倉庫

數據倉庫,簡稱爲DW(Data Warehouse的縮寫),是一個很大的數據存儲集合,通過對多樣的業務數據進行篩選與整合,產出企業的分析性報告和各類報表,爲企業的決策提供支持。
數據倉庫特點:

1、主題性

不同於傳統的數據庫是應用於某個項目,數據倉庫則是圍繞一個主題進行獲取數據和分析數據,以此來滿足數據分析的需求。

比如p2p平臺一個月內發生了多少交易額,分析那個時間段內現金的流入和流出最高,

2、集成性

我們上面說了,數據倉庫的數據來源有數據庫的數據、操作日誌的數據、運營後臺導入的數據、一些第三方接口的數據,原始數據來源不同,存儲方式也各不相同,如果要整合成最終的數據集合,需要對數據進行抽取、清洗、轉換的過程。

3、穩定性

數據倉庫不允許對數據進行修改,只能進行查詢和分析。

4、及時性

數據倉庫一定要獲取最新的數據,這樣數據分析出來的結果纔是有效的。

數據倉庫如何集成不同的數據源?

上面說了數據倉庫要將不同的數據源集合起來,那如何集合呢?這裏就要介紹ETL的概念,ETL的是 Extract-Transform-Load 的縮寫,主要描了數據從來源遷移到目標的幾個過程:

1、Extract(抽取)

首先是讀取數據源。

2、Transform(轉換)

把數據轉換成需要的緯度和格式,同時包含數據清洗,清洗掉一些噪音數據。

3、Load(加載)

把數據加載到目標倉庫以供分析使用。

現在國內最常用的是一款基於Hadoop的開源數據倉庫,名叫【Hive】,可以對存儲在HDFS上的文件數據集進行查詢和分析處理。

Hadoop原理架構

  1. hadoop大數據標準開源軟件
  2. HADOOP提供的功能:利用服務器集羣,根據用戶的自定義業務邏輯,對海量數據進行分佈式處理
  3. HADOOP的核心組件有
    A.HDFS(分佈式文件系統)
    B.YARN(運算資源調度系統)
    C.MAPREDUCE(分佈式運算編程框架)

ETL

1、什麼是ETL

ETL的全稱是抽取(Extract)、清洗(Cleaning)、轉換(Transform)、裝載(Load)。那麼在企業的信息化建設過程中,爲什麼需要有ETL這一個過程。這是因爲在信息化建設的過程中,數據是最能提現一個企業的信息化程度的。這就引出了第二個問題,數據是從何而來的?就筆者的經歷而言,一般數據都是來自於不同的生產系統,比如說,銀行的數據就來自於多個系統:核心系統、櫃面系統、票據系統、第三方數據源等系統的,不同源系統根據其功能的不同,源源不斷的產生着新數據,爲企業提供了大量的服務。但是這些源系統就像一個個數據孤島,彼此之間並無關聯,這就給業務人員或者管理者提出了第一個難度,我在跟進A業務的時候,需要去訪問源系統,在跟進B業務的時候,需要去訪問源系統B,如果我要跟進很多條業務線,是不是就要逐一去訪問各個不同的源系統呢?第二個難度在於,每個源系統的廠商不盡相同,故其各自的環境也都不太一樣,如果要去訪問所有的源系統的話,學習的成本和難度會大大增加。那麼能不能有這麼一套系統,能夠將所有的源系統都囊括在這一個系統中呢?答案是:有的!這個地方就稱爲數據倉庫!而ETL要做的事情,就是按照數據倉庫的規則和要求,對各個源系統的數據進行加工和整合,並且將各個源系統的數據存儲到數據倉庫中。

2、ETL的流程

2.1、數據抽取與清洗

這一環節的主要工作是獲取源系統的數據,並按照數據倉庫的規則,進行數據加工,對不完整的數據、錯誤的數據、重複的數據進行處理,最終提取出我們想要的數據。

2.2、數據轉換

數據轉化要解決兩個問題。

一是數據不一致。具體包括數據類型不一致、數據格式不一致、編碼不一致等。

二是數據粒度的轉換。源系統和數據倉庫對於業務的抽象粒度不一致。源系統是業務的生產者,故其對業務的抽象程度較低,換言之,源系統存儲了很詳細的明細數據。而數據倉庫則是給業務人員或者數據從業者提供一個平臺來分析數據的,故其對業務的抽象程度較高,存儲的都是進過一定程度彙總的數據。

2.3、數據加載

當前兩個問題都解決完了之後,接下來就進行數據的加載,進行數據加載需要明確以下幾個問題。

一是作業加載方式:全量加載還是增加更新。

二是任務觸發方式:時間觸發還是事件觸發。如果是時間觸發的話,還需要確定任務的上下游關係和依賴觸發關係。

三是調度工具:採用什麼調度工具,才能滿足上面的需求呢

2.4、數據校驗

當任務上線完成後,需要進行數據的一致性比對,從而確保我們的ETL邏輯是正確的,這樣纔可以放心大膽的使用數據倉庫中的數據了。

HDFS

1.HDFS前言

  • 設計思想
    分而治之:將大文件、大批量文件,分佈式存放在大量服務器上,以便於採取分而治之的方式對海量數據進行運算分析;

  • 在大數據系統中作用:
    爲各類分佈式運算框架(如:mapreduce,spark,tez,……)提供數據存儲服務

  • 重點概念:文件切塊,副本存放,元數據

2. HDFS的概念和特性

  1. HDFS的概念?
    首先,它是一個文件系統,用於存儲文件,通過統一的命名空間——目錄樹來定位文件

其次,它是分佈式的,由很多服務器聯合起來實現其功能,集羣中的服務器有各自的角色;

NameNode負責管理整個文件系統的元數據

DataNode 負責管理用戶的文件數據塊

  1. 默認存儲數據塊的大小?
    hadoop1.x的HDFS默認塊大小爲64MB;hadoop2.x的默認塊大小爲128MB。
  2. 數據複製默認存儲多少份? 3 份
  3. 對元數據的理解和作用?元數據在HDFS中有什麼作用?爲什麼元數據這麼重要?
    元數據(Meta Date),關於數據的數據或者叫做用來描述數據的數據或者叫做信息的信息。
    元數據可以爲數據說明其元素或屬性(名稱、大小、數據類型、等),或其結構(長度、字段、數據列),或其相關數據(位於何處、如何聯繫、擁有者)。
    (1)描述作用:根據元數據的定義,它最基本的功能就在於對信息對象的內容和位置進行描述,從而爲信息對象的存取與利用奠定必要的基礎。
    (2)定位作用:由於網絡信息資源沒有具體的實體存在,因此,明確它的定位至關重要。元數據包含有關網絡信息資源位置方面的信息,因而由此便可確定資源的位置之所在,促進了網絡環境中信息對象的發現和檢索。此外,在信息對象的元數據確定以後,信息對象在數據庫或其他集合體中的位置也就確定了,這是定位的另一層含義。
    (3)搜尋作用:元數據提供搜尋的基礎,在著錄的過程中,將信息對象中的重要信息抽出並加以組織,賦予語意,並建立關係,使檢索結果更加準確,從而有利於用戶識別資源的價值,發現其真正需要的資源。
    (4)評估作用:元數據提供有關信息對象的名稱、內容、年代、格式、製作者等基本屬性,使用戶在無需瀏覽信息對象本身的情況下,就能夠對信息對象具備基本瞭解和認識,參照有關標準即可對其價值進行必要的評估,作爲存取利用的參考。
    (5)選擇作用:根據元數據所提供的描述信息,參照相應的評估標準,結合使用環境,用戶便能夠做出對信息對象取捨的決定,選擇適合用戶使用的資源。

NameNode將整個namespace,包括block 到文件的映射、文件的屬性等,都存儲在一個稱爲FsImage 的文件中,它被存放在內存以及本地文件系統中。而任何對於namespace 元數據產生修改的操作,NameNode 都會使用一種稱爲EditLog的事務日誌記錄下來。例如在HDFS中創建一個文件, Namelode 就會在EditLog 中插入條記錄來表示:同樣的, 修改文件的副本系數也將往EditLog插入-條記錄。 主NameNode 會在本地文件系統中存儲這個 EditLog,並同步到各個Jomalol節點上,面從Srood則通過在JournalNode節點上,而從NameNode則通過在JournalNode節點中讀取EditLog來完成同步。

SQOOP技術知識原理

1、sqoop運行原理架構圖
在這裏插入圖片描述
2、sqoop的抽取數據的幾個命令
sqoop import --connect “jdbc:sqlserver://10.96.3.112:1433;database=SMES_CQ_2017” --username sa --password SMES@CQ --table F_WORKSTATION --target-dir ‘/data/cdh/hive/hiveExternal/F_WORKSTATION’ --null-string ‘\N’ --null-non-string ‘\N’ --fields-terminated-by ‘\001’ --lines-terminated-by ‘\n’ -m 1

SPARK

1、spark的生態有哪些
Spark 生態系統以Spark Core 爲核心,能夠讀取傳統文件(如文本文件)、HDFS、Amazon S3、Alluxio 和NoSQL 等數據源,利用Standalone、YARN 和Mesos 等資源調度管理,完成應用程序分析與處理。這些應用程序來自Spark 的不同組件,如Spark Shell 或Spark Submit 交互式批處理方式、Spark Streaming 的實時流處理應用、Spark SQL 的即席查詢、採樣近似查詢引擎BlinkDB 的權衡查詢、MLbase/MLlib 的機器學習、GraphX 的圖處理和SparkR 的數學計算等。
在這裏插入圖片描述
2、講講你對spark原理架構的理解
在這裏插入圖片描述
Spark Core:包含Spark的基本功能;尤其是定義RDD的API、操作以及這兩者上的動作。其他Spark的庫都是構建在RDD和Spark Core之上的
Spark SQL:提供通過Apache Hive的SQL變體Hive查詢語言(HiveQL)與Spark進行交互的API。每個數據庫表被當做一個RDD,Spark SQL查詢被轉換爲Spark操作。
Spark Streaming:對實時數據流進行處理和控制。Spark Streaming允許程序能夠像普通RDD一樣處理實時數據
MLlib:一個常用機器學習算法庫,算法被實現爲對RDD的Spark操作。這個庫包含可擴展的學習算法,比如分類、迴歸等需要對大量數據集進行迭代的操作。
GraphX:控制圖、並行圖操作和計算的一組算法和工具的集合。GraphX擴展了RDD API,包含控制圖、創建子圖、訪問路徑上所有頂點的操作.
Spark架構的組成圖:
在這裏插入圖片描述
Cluster Manager:在standalone模式中即爲Master主節點,控制整個集羣,監控worker。在YARN模式中爲資源管理器
Worker節點:從節點,負責控制計算節點,啓動Executor或者Driver。
Driver: 運行Application 的main()函數
Executor:執行器,是爲某個Application運行在worker node上的一個進程
3、spark的運行模式有哪些
Spark 的運行模式有 Local(也稱單節點模式),Standalone(集羣模式),Spark on Yarn(運行在Yarn上),Mesos以及K8s等常用模式
Local 模式是最簡單的一種Spark運行方式,它採用單節點多線程(cpu)方式運行,local模式是一種OOTB(開箱即用)的方式,只需要在spark-env.sh導出JAVA_HOME,無需其他任何配置即可使用,因而常用於開發和學習
Spark可以通過部署與Yarn的架構類似的框架來提供自己的集羣模式,該集羣模式的架構設計與HDFS和Yarn大相徑庭,都是由一個主節點多個從節點組成,在Spark 的Standalone模式中,主,即爲master;從,即爲worker.
Spark on Yarn 模式就是將Spark應用程序跑在Yarn集羣之上,通過Yarn資源調度將executor啓動在container中,從而完成driver端分發給executor的各個任務。將Spark作業跑在Yarn上,首先需要啓動Yarn集羣,然後通過spark-shell或spark-submit的方式將作業提交到Yarn上運行。

數據倉庫應用

應用案例

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