1. 程式人生 > >第二期:關於十大數據相關問答匯總,關註持續更新中哦~

第二期:關於十大數據相關問答匯總,關註持續更新中哦~

大數據

NO.1 學大數據如何零基礎入門?

答:學習任何東西都一樣,一開始就是一道坎,我很喜歡看書,特別是容易入門的書。對於大數據,我的具體研究方向是大規模數據的機器學習應用,所以首先要掌握以下基本概念。
微積分(求導,極值,極限)
線性代數(矩陣表示、矩陣計算、特征根、特征向量)
概率論+統計(很多數據分析建模基於統計模型)、統計推斷、隨機過程
線性規劃+凸優化、非線性規劃等
*數值計算、數值線代等
當然一開始只要有微積分、線代以及概率論基本上就可以入門機器學習,我強烈推薦幾本書,這幾本書不需要看完,只需要對其中重要知識點(求導、矩陣計算、條件概率)掌握後,當工具書使用即可,為後面學習機器學習以及大數據工具鋪墊基礎。{大數據時代},{深入淺出數據分析},{深入淺出統計學}

大數據工具

學習大數據最好的編程語言肯定是Java,Scala也可以。當時我給自己制定的計劃如下,可參考一下。

初始大數據
學習內容:Hadoop分布式系統
學習目標:Hadoop、HDFS、MapReduce、Yarn
完成項目:電影票房實時統計、J2EE網站反爬蟲

大數據數據庫
學習內容:HIVE+HBase
學習目標:Hadoop、HDFS、MapReduce、HBase
完成項目:基於HIVE和HBase用戶行為分析客戶風險等級

實時數據采集處理
學習內容:實時數據采集處理
學習目標:flume、kafka、storm、數據可視化
完成項目:實時計算+可視化圖形

Spark數據分析
學習內容:Spark數據分析

學習目標:Scala、Spark
完成項目:實時票房計算

機器學習課程
經過以上的各種磨練,你已經可以自己制定適合自己的學習計劃。當然,對於機器學習的課程,我強烈推薦周誌華教授的西瓜書《機器學習》,同時也看李航教授的《統計學習方法》,這兩本書難度不高,但已經涵蓋大多數工業應用場景,而且對國人來講是很好的中文教材,非常值得一看。
學習這種事情,最好是十年前開始進行,其次是現在,永遠不要覺得晚。

NO.2大數據主要用於哪些方面?

大數據的運用很廣泛,尤其是現在各地雲計算、大數據中心建立好以後,用大數據代替人工做出相應的判斷,能更好的解決一些比較實際的問題,主要大家看得見的運用其實還是在醫療衛生,交通出行,金融社交等領域,下面是一些介紹:

一、電商行業
電商行業是最早利用大數據進行精準營銷,它根據客戶的消費習慣提前生產資料、物流管理等,有利於精細社會大生產。由於電商的數據較為集中,數據量足夠大,數據種類較多,因此未來電商數據應用將會有更多的想象空間,包括預測流行趨勢,消費趨勢、地域消費特點、客戶消費習慣、各種消費行為的相關度、消費熱點、影響消費的重要因素等。

二、金融行業
大數據在金融行業應用範圍是比較廣的,它更多應用於交易,現在很多股權的交易都是利用大數據算法進行,這些算法現在越來越多的考慮了社交媒體和網站新聞來決定在未來幾秒內是買出還是賣出。

三、醫療行業
醫療機構無論是病理報告、治愈方案還是藥物報告等方面都是數據比較龐大行業,面對眾多病毒、腫瘤細胞都處於不斷進化的過程,診斷時會發現對疾病的確診和治療方案的確定是很困難的,而未來,我們可以借助大數據平臺收集不通病例和治療方案,以及病人的基本特征,可以建立針對疾病特點的數據庫。

四、農牧漁
未來大數據應用到農牧漁領域,這樣可以幫助農業降低菜賤傷農的概率,也可以精準預測天氣變化,幫助農民做好自然災害的預防工作,也能夠提高單位種植面積的高產出;牧農也可以根據大數據分析安排放牧範圍,有效利用農場,減少動物流失;漁民也可以利用大數據安排休漁期、定位捕魚等,同時,也能減少人員損傷。

五、生物技術
基因技術是人類未來挑戰疾病的重要武器,科學家可以借助大數據技術的應用,從而也會加快自身基因和其它動物基因的研究過程,這將是人類未來戰勝疾病的重要武器之一,未來生物基因技術不但能夠改良農作物,還能利用基因技術培養人類器官和消滅害蟲等。

六、改善城市
大數據還被應用改善我們日常生活的城市。例如基於城市實時交通信息、利用社交網絡和天氣數據來優化最新的交通情況。目前很多城市都在進行大數據的分析和試點。

七、改善安全和執法
大數據現在已經廣泛應用到安全執法的過程當中。想必大家都知道美國安全局利用大數據進行恐怖主義打擊,甚至監控人們的日常生活。而企業則應用大數據技術進行防禦網絡攻擊。警察應用大數據工具進行捕捉罪犯,信用卡公司應用大數據工具來檻車欺詐×××易。

在傳統領域大數據同樣將發揮巨大作用:幫助農業根據環境氣候土壤作物狀況進行超精細化耕作;在工業生產領域全盤把握供需平衡,挖掘創新增長點;交通領域實現智能輔助乃至無人駕駛,堵車與事故將成為歷史;能源產業將實現精確預測及產量實時調控。

個人的生活數據將被實時采集上傳,飲食、健康、出行、家居、醫療、購物、社交,大數據服務將被廣泛運用並對用戶生活質量產生革命性的提升,一切服務都將以個性化的方式為每一個“你”量身定制,為每一個行為提供基於歷史數據與實時動態所產生的智能決策。

NO.3大數據與金融科技?

回答一:首先你的數學學得怎麽樣,如果數學好,又是工科出身,有數據思維,這個專業是很好的。因為數據已經逐漸成為經濟發展的新引擎,如同過去一個世紀的石油天然氣一樣,會給經濟發展提供源源不斷的動力。任何工作都有壓力,大數據和金融科技不屬於直接編程的學科,主要還是數據處理。對數據的收集和分析能力是核心。如果有能力去這個專業,個人建議抓住機會。

回答二;金融科技2.0時代,有三大法寶,或者叫三駕馬車——大數據,人工智能和區塊鏈技術。我分別介紹一下:

  1. 大數據主要來自物聯網和互聯網數據,使用方法是利用大數據刻畫用戶畫像,分為靜態的生活畫像和動態的行為畫像,找到目標客戶群體。再利用大數據重塑征信體系,利用大數據征信甄別出低風險客戶,最後再展開精準營銷。

  2. 人工智能主要在於利用機器學習來完成人腦力不所及的工作,比如在上千股票的所有歷史中,找到跟你關註股票相近的一段K線走勢,可以參見“優理寶”這個APP。

  3. 區塊鏈技術最牛B。比特幣只是他的一個應用而已,最重要的在於實現“智能合約”,全網公開,全網監督,強制執行。

大數據只是金融科技中的一方面,建議多研究區塊鏈技術,這個應用比AI更廣。

NO.4Hadoop與Spark相比有存在優勢的方面嗎?
這裏有三種不同角度看待的回答,我覺得比較好,就一起收集來了

回答一:Hadoop

Hadoop就是解決了大數據的可靠存儲和處理。現在的Hadoop主要包含兩個框架:

大規模存儲系統HDFS:在由普通PC組成的集群上提供高可靠的文件存儲,通過將塊保存成多個副本的辦法來解決服務器或硬盤壞掉的問題。以低功耗、高性能的方式儲存數據,並且能優化大數據的種類和讀取速度。
計算引擎YARN:可以承載任何數量的程序框架,原始的框架是MR,通過Mapper和Reducer的抽象提供一個編程模型,可以在一個或上百個PC組成的不可靠集群上並發的、分布式的處理大量數據集,而把並發、分布式和故障恢復等計算細節隱藏起來。
Hadoop的局限和不足

抽象層次低,需要手工編寫代碼來完成,使用上難以上手。
只提供兩個操作,Map和Reduce,表達力欠缺。
一個Job只有Map和Reduce兩個階段(Phase),復雜的計算需要大量的Job完成,Job之間的依賴關系是由開發者自己管理的。
處理邏輯隱藏在代碼細節中,沒有整體邏輯
中間結果也放在HDFS文件系統中
ReduceTask需要等待所有MapTask都完成後才可以開始
時延高,只適用Batch數據處理,對於交互式數據處理,實時數據處理的支持不夠
對於叠代式數據處理性能比較差

Spark

Apache Spark是一個新興的大數據處理的引擎,主要特點是提供了一個集群的分布式內存抽象,以支持需要工作集的應用。

這個抽象就是RDD(Resilient Distributed Dataset),RDD就是一個不可變的帶分區的記錄集合,RDD也是Spark中的編程模型。Spark提供了RDD上的兩類操作,轉換和動作。轉換是用來定義一個新的RDD,包括map, flatMap, filter, union, sample, join, groupByKey, cogroup,ReduceByKey, cros, sortByKey, mapValues等,動作是返回一個結果,包括collect, reduce,count, save, lookupKey。
在Spark中,所有RDD的轉換都是是惰性求值的。RDD的轉換操作會生成新的RDD,新的RDD的數據依賴於原來的RDD的數據,每個RDD又包含多個分區。那麽一段程序實際上就構造了一個由相互依賴的多個RDD組成的有向無環圖(DAG)。並通過在RDD上執行動作將這個有向無環圖作為一個Job提交給Spark執行。

Spark對於有向無環圖Job進行調度,確定階段(Stage),分區(Partition),流水線(Pipeline),任務(Task)和緩存(Cache),進行優化,並在Spark集群上運行Job。RDD之間的依賴分為寬依賴(依賴多個分區)和窄依賴(只依賴一個分區),在確定階段時,需要根據寬依賴劃分階段。根據分區劃分任務。

Spark支持故障恢復的方式也不同,提供兩種方式,Linage,通過數據的血緣關系,再執行一遍前面的處理,Checkpoint,將數據集存儲到持久存儲中。
Spark為叠代式數據處理提供更好的支持。每次叠代的數據可以保存在內存中,而不是寫入文件。

Spark解決了Hadoop的那些不足

1、HadoopSpark抽象層次低,需要手工編寫代碼來完成,使用上難以上手=>基於RDD的抽象,實數據處理邏輯的代碼非常簡短。

2、只提供兩個操作,Map和Reduce,表達力欠缺=>提供很多轉換和動作,很多基本操作如Join,GroupBy已經在RDD轉換和動作中實現。

3、一個Job只有Map和Reduce兩個階段(Phase),復雜的計算需要大量的Job完成,Job之間的依賴關系是由開發者自己管理的=>一個Job可以包含RDD的多個轉換操作,在調度時可以生成多個階段(Stage),而且如果多個map操作的RDD的分區不變,是可以放在同一個Task中進行。

4、處理邏輯隱藏在代碼細節中,沒有整體邏輯=>在Scala中,通過匿名函數和高階函數,RDD的轉換支持流式API,可以提供處理邏輯的整體視圖。代碼不包含具體操作的實現細節,邏輯更清晰。

5、中間結果也放在HDFS文件系統中=>中間結果放在內存中,內存放不下了會寫入本地磁盤,而不是HDFS。

6、ReduceTask需要等待所有MapTask都完成後才可以開始=> 分區相同的轉換構成流水線放在一個Task中運行,分區不同的轉換需要Shuffle,被劃分到不同的Stage中,需要等待前面的Stage完成後才可以開始。

回答二:
首先,我們要思考Hadoop為什麽會流行起來?Hadoop之所以流行是因為它解決了互聯網,移動互聯網快速數據積累與原有傳統數據分析方案無法適應的痛點。

我在《領域修煉方法-論軟件架構設計的思想及其適應性》一文中曾論述過,隨著信息技術的不斷發展,很多解決軟件架構設計的具體技術已經過時或者消亡,但是,軟件架構設計的模式、思想是不會過時的。Hadoop作為解決大數據分析痛點的一種具體技術同樣逃脫不了這一命運。Hadoop什麽時候出現的?時間要追溯到2016年1月。Spark什麽時候出現的?時間是2009年。顯而易見,Spark是建立在Hadoop這一巨人的肩膀之上的開拓創新,其在解決Hadoop能夠解決的問題同時,肯定還能夠彌補Hadoop的不足。因此,從這一點上來說,Hadoop相比於Spark不存在優勢。

Hadoop與Spark相比完全沒有任何優勢了嗎?答案是否定的。這是由於互聯網特別是移動互聯網、物聯網快速發展起來以後,數據規模成幾何級的增長而且這一趨勢還在持續,這一現實需求使得大數據分析仍處於上升期,因此Hadoop的發展同樣處於上升期。既然Hadoop和Spark同處於上升期,那麽作為首先出現的Hadoop就具有先發優勢,其實際行業應用更廣,體系發展的更快更完善,不足之處不斷的有新的補充方案加入進來。這一點從Apache的頂級項目就可以看出來,Hadoop生態體系相關的頂級項目有近20個,而Spark相關的只有三四個。

企業的技術選型是以解決當前的業務痛點為前提的,因此,選擇一個成熟完善的體系解決當前業務痛點,還是選擇一個相對不夠完善的方案,投入更多的資源?答案顯而易見,這就是Hadoop相比於Spark的優勢。

至於這一優勢能否彌補Saprk架構能夠解決更多數據分析場景的優勢,在於企業當前端所面臨的實際需求。其實大多數時候,兩者相互配合是一種更完善的方案。

7、時延高,只適用Batch數據處理,對於交互式數據處理,實時數據處理的支持不夠=>通過將流拆成小的batch提供Discretized Stream處理流數據。

回答三:
 Hadoop和Spark均是大數據框架,都提供了一些執行常見大數據任務的工具。但確切地說,它們所執行的任務並不相同,彼此也並不排斥。

雖然在特定的情況下,Spark據稱要比Hadoop快100倍,但它本身沒有一個分布式存儲系統。而分布式存儲是如今許多大數據項目的基礎。它可以將PB級的數據集存儲在幾乎無限數量的普通計算機的硬盤上,並提供了良好的可擴展性,只需要隨著數據集的增大增加硬盤。

因此,Spark需要一個第三方的分布式存儲。也正是因為這個原因,許多大數據項目都將Spark安裝在Hadoop之上。這樣,Spark的高級分析應用程序就可以使用存儲在HDFS中的數據了。

  與Hadoop相比,Spark真正的優勢在於速度。Spark的大部分操作都是在內存中,而Hadoop的MapReduce系統會在每次操作之後將所有數據寫回到物理存儲介質上。這是為了確保在出現問題時能夠完全恢復,但Spark的彈性分布式數據存儲也能實現這一點。

  另外,在高級數據處理(如實時流處理和機器學習)方面,Spark的功能要勝過Hadoop。在Bernard看來,這一點連同其速度優勢是Spark越來越受歡迎的真正原因。實時處理意味著可以在數據捕獲的瞬間將其提交給分析型應用程序,並立即獲得反饋。在各種各樣的大數據應用程序中,這種處理的用途越來越多,比如,零售商使用的推薦引擎、制造業中的工業機械性能監控。Spark平臺的速度和流數據處理能力也非常適合機器學習算法。

這類算法可以自我學習和改進,直到找到問題的理想解決方案。這種技術是最先進制造系統(如預測零件何時損壞)和無人駕駛汽車的核心。Spark有自己的機器學習庫MLib,而Hadoop系統則需要借助第三方機器學習庫,如Apache Mahout。

  實際上,雖然Spark和Hadoop存在一些功能上的重疊,但它們都不是商業產品,並不存在真正的競爭關系,而通過為這類免費系統提供技術支持贏利的公司往往同時提供兩種服務。例如,Cloudera就既提供Spark服務也提供Hadoop服務,並會根據客戶的需要提供最合適的建議。

  Bernard認為,雖然Spark發展迅速,但它尚處於起步階段,安全和技術支持基礎設施方還不發達。在他看來,Spark在開源社區活躍度的上升,表明企業用戶正在尋找已存儲數據的創新用法。

NO.5 大數據Spark技術是否可以替代Hadoop?

Spark技術從之前和當前的技術路線上看不是為了替代Hadoop,更多的是作為Hadoop生態圈(廣義的Hadoop)中的重要一員來存在和發展的。

首先我們知道Hadoop(狹義的Hadoop)有幾個重點技術HDFS、MR(MapReduce), YARN。
這幾個技術分別對應分布式文件系統(負責存儲), 分布式計算框架(負責計算), 分布式資源調度框架(負責資源調度)。

我們再來看Spark的技術體系 ,主要分為以下:

  • Spark Core :提供核心框架和通用API接口等,如RDD等基礎數據結構;

  • Spark SQL : 提供結構化數據處理的能力, 分布式的類SQL查詢引擎;

  • Streaming: 提供流式數據處理能力;

  • MLLib: 提供分布式機器學習常用的算法包;

  • GraphX : 提供圖計算能力

從上面就可以看出,Spark主要是提供各種數據計算能力的(官方稱之為全棧計算框架),本身並不過多涉足存儲層和調度層(盡管它自身提供了一個調度器),它的設計是兼容流行的存儲層和調度層。也就是說, Spark的存儲層不僅可以對接Hadoop HDFS,也可以對接Amazon S2; 調度層不僅可以對接Hadoop YARN也可以對接(Apache Mesos)。

因此,我們可以說Spark更多的是補充Hadoop MR單一批處理計算能力, 而不是完全替代Hadoop的。

NO.6 Hadoop、spark、SaaS、PaaS、IaaS、雲計算概念區分?

Hadoop & Spark

首先二者均不是屬於產品類別,理解為生態系統或者也有人將其稱為“大數據通用處理平臺”也是可以的,這種稱呼也更為準確

Hadoop是由Apache基金會所開發的分布式系統基礎架構

Hadoop主要包括:

Hadoop分布式文件系統:一個分布式的、面向塊的、不可更新的、高度伸縮性的、可運行在集群中普通硬盤上的文件系統

MapReduce框架:一個基本的在集群中一組標準硬件上執行的分布式計算框架

YARN :Hadoop生態集群中默認的資源管理器

Hive :構建在MapReduce框架之上的類SQL查詢引擎

Hbase:基於HDFS的鍵值對存儲系統為Hadoop提供了聯機事務處理(OLTP)能力

Spark而言是專為大規模數據處理而設計的快速通用的計算引擎,實際上現階段其還不夠成熟

Spark主要包括:

Spark Core :用於通用分布式數據處理的引擎

Spark Sql :運行在Spark上的SQL查詢語句支持一系列SQL函數和HiveQL

Spark Streaming:基於spark的微批處理引擎

MLlib:構建在spark之上的機器學習庫

三劍客:IaaS 、PaaS、SaaS

其實就是雲計算的三類分層服務:

基礎設施在最下端:Infrastructure-as-a-Service(IaaS)

平臺在中間:Platform-as-a-Service(PaaS)

軟件在頂端:Software-as-a-Service(SaaS)

IaaS :Infrastructure as a Service

基礎設施即服務

把計算基礎(服務器、網絡技術、存儲和數據中心空間)作為一項服務提供給客戶。它也包括提供操作系統和虛擬化技術、來管理資源。消費者通過Internet可以從完善的計算機基礎設施獲得服務。

PaaS:Platform as a Service

平臺即服務

PaaS實際上是指將軟件研發的平臺作為一種服務,供應商提供超過基礎設施的服務,一個作為軟件開發和運行環境的整套解決方案,即以SaaS的模式提交給用戶。因此,PaaS也是SaaS模式的一種應用。但是,PaaS的出現可以加快SaaS的發展,尤其是加快SaaS應用的開發速度。

SaaS:Software as a Service

軟件即服務

是一種交付模式,其中應用作為一項服務托管,通過Internet提供給用戶;幫助客戶更好地管理它們的IT項目和服務、確保它們IT應用的質量和性能,監控它們的在線業務。

雲計算:Cloud Computing

當需要的時候,扭開水龍頭,水就來了,我只需要操心交水費就是了!

當你需要用一個軟件時,你不用跑去電腦城,打開應用商店,它就下載下來了,你只需要交錢就是了;

當你想看報紙的時候,你不用跑去報刊亭,只要打開頭條新聞,新聞唾手可得;

當你想看書的時候,你不用跑去書城,只需要打開閱讀軟件,找到這樣的一本書,在手機上閱讀;

當你想聽音樂的時候,你不用再跑去音像店苦苦找尋CD光碟,打開音樂軟件,就能聆聽音樂;

雲計算,像在每個不同地區開設不同的自來水公司,沒有地域限制,優秀的雲軟件服務商,向世界每個角落提供軟件服務——就像天空上的雲一樣,不論你身處何方,只要你擡頭,就能看見!

“雲計算”的五大特點:

1.大規模、分布式 2.虛擬化 3.高可用性和擴展性 4.按需服務,更加經濟 5.安全

“雲計算”已經深深植入到我們生活中的點點滴滴,平時常用的那些APP或網站,基本都離不開“雲計算”作為背後的強大服務和技術支持,如剁手黨愛恨交加的淘寶、京東,社交癡迷黨的微信、微博等等。
於此同時,越來越多的企業機構乃至政務部門,開始使用基於雲的平臺服務,生活因“雲計算”正在發生著革命性的變革和改變!

第二期:關於十大數據相關問答匯總,關註持續更新中哦~