《Spark与Hadoop大数据分析》一一1.1 大数据分析以及 Hadoop 和 Spark 在其中承担的角色...
本節書摘來自華章計算機《Spark與Hadoop大數據分析》一書中的第1章,第1.1節,作者:文卡特·安卡姆(Venkat Ankam) 更多章節內容可以訪問云棲社區“華章計算機”公眾號查看。
1.1 大數據分析以及 Hadoop 和 Spark 在其中承擔的角色
傳統的數據分析使用關系型數據庫管理系統(Relational Database Management System,RDBMS)的數據庫來創建數據倉庫和數據集市,以便使用商業智能工具進行分析。RDBMS 數據庫采用的是寫時模式(Schema-on-Write)的方法,而這種方法有許多缺點。
傳統數據倉庫的設計思想是用于提取、轉換和加載(Extract, Transform, and Load,ETL)數據,據此回答與用戶需求直接相關的一組預先定義的問題。這些預先定義的問題是利用 SQL 查詢來回答的。一旦數據以易于訪問的(consumable)格式進行轉換和加載,用戶就可以通過各種工具和應用程序訪問它,從而生成報告和儀表板。但是,以易于訪問的格式創建數據需要幾個步驟,如下所示:
(1)確定預先定義的問題。
(2)從數據源系統識別和收集數據。
(3)創建 ETL 流水線,把數據以易于訪問的格式加載到分析型數據庫里。
如果有了新的問題,系統就需要識別和添加新的數據源并創建新的ETL流水線。這涉及數據庫中的模式更改,實施工作通常會持續1~6個月。這是一個很重大的約束,迫使數據分析人員只能在預定義的范圍內進行操作。
將數據轉換為易于訪問的格式通常會導致丟失原始/原子數據,而這些數據可能含有我們正在尋找的答案的結論或線索。
處理結構化和非結構化數據是傳統數據倉庫系統中的另一個挑戰。有效地存儲和處理大型二進制圖像或視頻也總是有挑戰性的。
大數據分析是不使用關系數據庫的;相反,它通常借助Hive和HBase在Hadoop平臺上使用讀取模式(Schema-on-Read,SOR)方法 。這種方法有許多優點。圖1-2比較了 Schema-on-Write和Schema-on-Read 的場景。
圖1-2 寫時模式和讀取模式的對比
讀取模式方法為系統帶來了靈活性和可重用性。讀取模式的范例強調以原始的、未修改的格式存儲數據,并且通常在讀取或處理數據時,會根據需要將某個模式應用于數據。這種方法讓存儲數據的數量和類型具有更大的靈活性。同一組原始數據可以應用多個模式,以提出各種問題。如果需要回答新問題,只需獲取新數據并將其存儲在HDFS的一個新目錄中,就可以開始回答新問題了。
這種方法還為使用多種方法和工具訪問數據提供了巨大的靈活性。例如,可以使用 SQL分析工具或Spark中的復雜Python或R腳本來分析同一組原始數據。由于我們并不會把數據存儲在ETL所需的多個層中,因此可以降低存儲成本和數據轉移成本。非結構化和結構化的數據源都可以和結構化的數據源一起進行分析。
1.1.1 典型大數據分析項目的生命周期
使用大數據平臺(如 Hadoop)進行大數據分析的生命周期與傳統的數據分析項目類似。不過,大數據分析有個根本的格局轉變,那就是使用讀取模式方法進行數據分析。
一個大數據分析項目涉及的活動如圖1-3所示。
圖1-3 大數據分析的生命周期
首先要明確項目的業務問題和期望的結果,以便確定需要哪些數據,可以進行哪些分析。業務問題的一些示例是公司銷售額下降、客戶訪問了網站但沒有購買產品、客戶放棄了購物車、支持電話熱線呼叫量的突然增加等。而項目成果的一些示例是把購買率提高 10%、將購物車放棄率降低50%、在下一季度讓支持電話量減少50%的同時保持客戶滿意度。
要確定數據的質量、數量、格式和來源。數據源可以是數據倉庫(OLAP)、應用程序數據庫(OLTP)、來自服務器的日志文件、來自互聯網的文檔,以及從傳感器和網絡集線器生成的數據。要識別所有內部和外部數據源的需求。此外,要確定數據匿名化和重新進行身份信息處理的要求,以刪除或掩蓋個人身份信息(personally identifiable information,PII)。
我們可以使用Sqoop工具從關系數據庫收集數據,并使用Flume來對數據進行流式傳輸。我們還可以考慮使用Apache Kafka來實現可靠的中間存儲。在設計和收集數據的時候,還要考慮容錯的情況。
我們得到的數據會有不同的格式,也可能有數據質量問題。預處理步驟的作用是把數據轉換為所需的格式,或清理不一致、無效或損壞的數據。一旦數據符合所需的格式,就可以啟動執行分析階段的工作。Apache Hive、Apache Pig和Spark SQL都是對海量數據進行預處理的優秀工具。
在某些項目中,如果數據已經具備了整潔的格式,或者分析過程是使用讀取模式(Schema-on-Read)方法直接針對源數據進行的,那可能就不需要這個步驟了。
我們進行分析的目的是回答業務方面的問題。這就需要了解數據以及數據點之間的關系。進行分析的類型有描述性和診斷性分析,得到的是數據的過去和當前視圖。它通常回答的是像 “發生了什么事情?”和“為什么發生?”這樣的一些問題。在某些情況下也會進行預測分析,它回答的問題是,基于某個假設會發生什么情況,諸如此類。
Apache Hive、Pig、Impala、Drill、Tez、Apache Spark和HBase都是在批處理模式下進行數據分析的優秀工具。而Impala、Tez、Drill和Spark SQL等實時分析工具可以集成到傳統的商業智能工具(Tableau、Qlikview等)里,用于交互式分析。
數據可視化是把分析結果以圖像或圖形格式來呈現,以便更好地理解分析結果,并根據這些數據做出業務決策。
通常,我們可以使用Sqoop將最終數據從Hadoop導出到RDBMS數據庫,以便集成到可視化系統中;也可以把可視化系統直接集成到Tableau、Qlikview、Excel這些工具中。基于Web的筆記本(如 Jupyter、Zeppelin和Databricks cloud等)也可以通過和Hadoop及 Spark組件進行集成,用于實現數據的可視化。
1.1.2 Hadoop和Spark承擔的角色
Hadoop和Spark為你提供了大數據分析的極大靈活性:
大規模數據預處理:大規模數據集可以高性能地進行預處理
探索大型和完整數據集:數據集的大小無關緊要
通過提供讀取模式方法加速數據驅動的創新
用于數據探索的各種工具和API
總結
以上是生活随笔為你收集整理的《Spark与Hadoop大数据分析》一一1.1 大数据分析以及 Hadoop 和 Spark 在其中承担的角色...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unity3D开发基础组件提取总结
- 下一篇: 敏捷开发系列学习总结(6)——你用什么工