一、如何解決PB級數據計算問題
- 數據是龐大的,程序比數據小的多,顯然將數據輸入給程序是不划算的,那麼反其而行,將程序分發到數據所在的地方進行計算,豈不划算?
二、如何實現移動計算程序到數據所在的位置進行計算
- 獎待處理的數據存儲在服務器集羣的所有服務器上,主要使用HDFS分佈式文件存儲系統,將文件分成很多塊(BLOCK),以塊爲單位將數據存儲在集羣的服務器上。
- 大數據引擎根據集羣不同服務器的計算能力,在每臺服務器上啓動若干分佈式任務執行進程,這些進程會等待引擎給他們分配執行任務。
- 使用大數據計算框架支持的模型進行編程,比如Hadoop的MapReduce編程模型,或者Spark的RDD編程模型。應用程序編寫好以後,將其打包。MapReduce和Spark都是在JVM環境中運行的,所以打包出來時一個jar包。
- 用Hadoop或這Spark的啓動命令執行這個應用程序的jar包,首先執行引擎會解析程序要處理的數據的輸入路徑。根據數據量的大小,將數據分成若干片(Split),每個數據片都分配一個任務執行進程去處理。
- 任務執行進程收到分配的任務後,檢查自己是否有任務對應的程序包,如果沒有就去下載,下載以後通過反射的方式加載程序。
- 加載程序後,任務執行程序根據分配的數據片的文件地址和數據在文件內的偏移量讀取數據,並將數據輸入給應用程序從而實現分佈式服務器集羣中的移動計算程序。