Java知識分享網 - 輕松學習從此開始!????

Java知識分享網

Java1234官方群25:java1234官方群25
Java1234官方群25:838462530
     

GIT視頻教程(結合github,碼云)免費領取

SpringBoot打造全棧在線教育平臺實戰課程

SpringBoot打造企業級進銷存

Java1234 VIP課程

領取微信掃碼登錄Java實現視頻教程

Java1234至尊VIP(特價活動)

唯品會Java大數據開發工程師 PDF 下載


分享到:
時間:2020-08-09 11:28來源:http://www.248787.tw 作者:小鋒  侵權舉報
唯品會Java大數據開發工程師 PDF 下載
失效鏈接處理
唯品會Java大數據開發工程師 PDF 下載


 
本站整理下載:
 
相關截圖:
 
主要內容:

1、kafka 的 message 包括哪些信息 一個 Kafka 的 Message 由一個固定長度的 header 和一個變長的消息體 body 組成 header 部分由一個字節的 magic(文件格式)和四個字節的 CRC32(用于判斷 body 消息體 是否正常)構成。當 magic 的值為 1 的時候,會在 magic 和 crc32 之間多一個字節的數據: attributes(保存一些相關屬性,比如是否壓縮、壓縮格式等等);如果 magic 的值為 0,那 么不存在 attributes 屬性 body 是由 N 個字節構成的一個消息體,包含了具體的 key/value 消息 2、怎么查看 kafka 的 offset 0.9 版本以上,可以用最新的 Consumer client 客戶端,有 consumer.seekToEnd() / c onsumer.position() 可以用于得到當前最新的 offset: 3、hadoop 的 shuffle 過程 一、Map 端的 shuffle Map 端會處理輸入數據并產生中間結果,這個中間結果會寫到本地磁盤,而不是 HDFS。 每個 Map 的輸出會先寫到內存緩沖區中,當寫入的數據達到設定的閾值時,系統將會啟動 一個線程將緩沖區的數據寫到磁盤,這個過程叫做 spill。 在 spill 寫入之前,會先進行二次排序,首先根據數據所屬的 partition 進行排序,然后 每個 partition 中的數據再按 key 來排序。partition 的目是將記錄劃分到不同的 Reducer 上去,以期望能夠達到負載均衡,以后的 Reducer 就會根據 partition 來讀取自己對應的數 據。接著運行 combiner(如果設置了的話),combiner 的本質也是一個 Reducer,其目的 是對將要寫入到磁盤上的文件先進行一次處理,這樣,寫入到磁盤的數據量就會減少。最后
將數據寫到本地磁盤產生 spill 文件(spill 文件保存在{mapred.local.dir}指定的目錄中, Map 任務結束后就會被刪除)。 最后,每個 Map 任務可能產生多個 spill 文件,在每個 Map 任務完成前,會通過多路 歸并算法將這些 spill 文件歸并成一個文件。至此,Map 的 shuffle 過程就結束了。 二、Reduce 端的 shuffle Reduce 端的 shuffle 主要包括三個階段,copy、sort(merge)和 reduce。 首先要將 Map 端產生的輸出文件拷貝到 Reduce 端,但每個 Reducer 如何知道自己 應該處理哪些數據呢?因為 Map 端進行 partition 的時候,實際上就相當于指定了每個 Reducer 要處理的數據(partition 就對應了 Reducer),所以 Reducer 在拷貝數據的時候只 需拷貝與自己對應的 partition 中的數據即可。每個 Reducer 會處理一個或者多個 partition, 但需要先將自己對應的 partition 中的數據從每個 Map 的輸出結果中拷貝過來。 接下來就是 sort 階段,也成為 merge 階段,因為這個階段的主要工作是執行了歸并排 序。從 Map 端拷貝到 Reduce 端的數據都是有序的,所以很適合歸并排序。最終在 Reduce 端生成一個較大的文件作為 Reduce 的輸入。 最后就是 Reduce 過程了,在這個過程中產生了最終的輸出結果,并將其寫到 HDFS 上。4、spark 集群運算的模式 Spark 有很多種模式,最簡單就是單機本地模式,還有單機偽分布式模式,復雜的則運行 在集群中,目前能很好的運行在 Yarn 和 Mesos 中,當然 Spark 還有自帶的 Standalo
ne 模式,對于大多數情況 Standalone 模式就足夠了,如果企業已經有 Yarn 或者 Mes os 環境,也是很方便部署的。 standalone(集群模式):典型的 Mater/slave 模式,不過也能看出 Master 是有單點故障的; Spark 支持 ZooKeeper 來實現 HA on yarn(集群模式): 運行在 yarn 資源管理器框架之上,由 yarn 負責資源管理,Spar k 負責任務調度和計算 on mesos(集群模式): 運行在 mesos 資源管理器框架之上,由 mesos 負責資源管理, Spark 負責任務調度和計算 on cloud(集群模式):比如 AWS 的 EC2,使用這個模式能很方便的訪問 Amazon 的 S 3;Spark 支持多種分布式存儲系統:HDFS 和 S3 5、HDFS 讀寫數據的過程 讀: 1、跟 namenode 通信查詢元數據,找到文件塊所在的 datanode 服務器 2、挑選一臺 datanode(就近原則,然后隨機)服務器,請求建立 socket 流 3、datanode 開始發送數據(從磁盤里面讀取數據放入流,以 packet 為單位來做校驗) 4、客戶端以 packet 為單位接收,現在本地緩存,然后寫入目標文件 寫: 1、根 namenode 通信請求上傳文件,namenode 檢查目標文件是否已存在,父目錄是否 存在2、namenode 返回是否可以上傳 3、client 請求第一個 block 該傳輸到哪些 datanode 服務器上
4、namenode 返回 3 個 datanode 服務器 ABC 5、client 請求 3 臺 dn 中的一臺 A 上傳數據(本質上是一個 RPC 調用,建立 pipeline), A 收到請求會繼續調用 B,然后 B 調用 C,將真個 pipeline 建立完成,逐級返回客戶端 6、client 開始往 A 上傳第一個 block(先從磁盤讀取數據放到一個本地內存緩存),以 p acket 為單位,A 收到一個 packet 就會傳給 B,B 傳給 C;A 每傳一個 packet 會放入一個 應答隊列等待應答 7、當一個 block 傳輸完成之后,client 再次請求 namenode 上傳第二個 block 的服務器。 6、RDD 中 reduceBykey 與 groupByKey 哪個性能好,為什么 reduceByKey:reduceByKey 會在結果發送至 reducer 之前會對每個 mapper 在本地 進行 merge,有點類似于在 MapReduce 中的 combiner。這樣做的好處在于,在 map 端 進行一次 reduce 之后,數據量會大幅度減小,從而減小傳輸,保證 reduce 端能夠更快的 進行結果計算。 groupByKey:groupByKey 會對每一個 RDD 中的 value 值進行聚合形成一個序列 (Iterator),此操作發生在 reduce 端,所以勢必會將所有的數據通過網絡進行傳輸,造成不 必要的浪費。同時如果數據量十分大,可能還會造成 OutOfMemoryError。 通過以上對比可以發現在進行大量數據的 reduce 操作時候建議使用 reduceByKey。不僅 可以提高速度,還是可以防止使用 groupByKey 造成的內存溢出問題。


 

------分隔線----------------------------
鋒哥公眾號


鋒哥微信


關注公眾號
【Java資料站】
回復 666
獲取 
66套java
從菜雞到大神
項目實戰課程
体育彩票开奖时间