基本概念:
Hadoop主要包含兩個部分
1、HDFS :(HadoopDistributedFileSystem)hadoop分佈式文件系統, 主要是 master/slave (結構存在主節點和從節點)。
- 就部署上看 master節點上運行namenode slave節點上運行各個的datanode
- HDFS結構
- 結構圖說明及整個交互的過程:
- Block :一個文件分塊 默認是64M
- NameNode:保存整個文件系統的目錄信息,文件信息以及文件相應的信息。工作特點:NameNode始終在內存中保存metadata用於處理讀請求,到有了寫請求時,namenode會首先寫editlog到磁盤成功返回後纔會修改內存,並且向客戶端返回。Hadoop會維護一個fsimage文件,也就是namenode中metadata的鏡像,但是fsimage不會隨時與metadata保持一致 而是每隔一段時間來更新editlog來更新內容,Secondary namenode 就是用來更新
- DataNode:數據節點用於存儲Blocks
- Replication:複製集可以通過配置文件來實現
2、MapRduce:
hadoop 和spark 學習資料
https://blog.csdn.net/hit0803107/article/details/52795241(spark 集羣環境的搭建)
https://blog.csdn.net/zonzereal/article/details/78095110(hadoop 組件的詳細說明)
https://blog.csdn.net/u013078295/article/details/52182814(hadoop 配置文件詳解)
http://www.cnblogs.com/laov/p/3433994.html(hadoop 的web頁面)
http://lib.csdn.net/article/scala/25824(用開發工具開發工具然後部署到spark集羣進行測試)
http://www.cnblogs.com/csxf/p/3166283.html(JobTracker和TaskTracker 的區別)
https://www.cnblogs.com/xybaby/p/7787034.html(有助於理解分佈式環境)
http://blog.sina.com.cn/s/blog_6277623c0101jcu6.html(hadoop web端口)
https://blog.csdn.net/thomas0yang/article/details/8562910(hadoop mapreduce 原理)
在搭建的過程遇見的問題及解決問題的參考資料
問題一 怎麼集羣的怎麼處理各個數據的節點的數據的,是內部機制實現的自動部署還是認爲的將數據部署在各個節點上的
問題二,在格式化文件的時候經常會報 no datanode to stop 還有就是無法連接(簡單粗暴的方式 基本可以解決大部分問題)
上傳文件:
hadoop fs -mkdir -p /Hadoop/Input
hadoop dfs -put /usr/local/software/hadoop-2.7.6/wordcount.txt /Hadoop/Input(前面是文件在服務器的路徑 後面的是上面在hdfs創建的路徑)
hadoop fs -ls /Hadoop/Input
傳 hdfs 然後 用spark 讀取測試 val file = sc.textFile("hdfs://192.168.207.91:9000/Hadoop/Input/files/README.md")/Hadoop/Input/files
val file=sc.textFile("hdfs://master:9000/Hadoop/Input/wordcount.txt")
val rdd = file.flatMap(line => line.split(" ")).map(word => (word,1)).reduceByKey(_+_)
rdd.collect()
rdd.foreach(println)
測試 spark程序
hadoop fs -put /usr/local/software/hadoop-2.7.6/UserPurchaseHistory.csv /
./spark-submit --master spark://192.168.207.135:7077 --class cn.ml.PurchaseProduct /usr/local/software/spark-2.2.1-bin-hadoop2.7/SparkWordCount.jar