日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hadoop的基本概念和简单使用

發布時間:2025/3/19 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hadoop的基本概念和简单使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1、概念
    • 1.1、Hadoop 1.0和Hadoop 2.0
      • 什么是Hadoo1.0
      • 什么是Hadoo2.0
      • 兩者區別
        • Hadoop整體框架區別
        • MapReduce計算框架區別
    • 1.2、MapReduce和HDFS
      • 什么是MapReduce
      • 什么是HDFS
    • 1.3、NameNode和DataNode
      • 什么是Block
      • 什么是NameNode
      • 什么是DataNode
    • 1.4、JobTracker和TaskTracker
      • 什么是JobTracker
      • 什么是TaskTracker
    • 1.5、ResourceManager和NodeManager
  • 2、Hadoop的簡單使用
    • 2.1 創建文件夾
    • 2.2 查看創建的文件夾
    • 2.3 上傳文件
    • 2.4 下載文件
    • 2.5 運行一個mapreduce的demo程序:wordcount

1、概念

1.1、Hadoop 1.0和Hadoop 2.0

什么是Hadoo1.0

Hadoop1.0即第一代Hadoop,指的是版本為Apache Hadoop 0.20.x、1.x或者CDH3系列的Hadoop,內核主要是由HDFS和MapReduce兩個系統組成。
其中MapReduce是一個離線處理框架,由編程模式(新舊API)、運行時環境(JobTracker和TaskTracker)和數據處理引擎(MapTask和ReduceTask)三部分組成。

什么是Hadoo2.0

Hadoop2.0即第二代Hadoop,指的是版本為Apache Hadoop 0.23.x、2.x或者CDH4系列的Hadoop,內核主要由HDFS、MapReduce和YARN三個系統組成,其中YARN是一個資源管理系統,負責集群資源管理和調度,MapReduce則是運行在YARN上的離線處理框架,它與Hadoop 1.0中的MapReduce在編程模型(新舊API)和數據處理引擎(MapTask和ReduceTask)兩個方面是相同的。

兩者區別

Hadoop整體框架區別

Hadoop1.0由分布式存儲系統HDFS和分布式計算框架MapReduce組成,其中HDFS由一個NameNode和多個DateNode組成,MapReduce由一個JobTracker和多個TaskTracker組成。

Hadoop2.0為克服Hadoop1.0中的不足進行了下面改進:

  • 針對Hadoop1.0單NameNode制約HDFS的擴展性問題,提出HDFS Federation,它讓多個NameNode分管不同的目錄進而實現訪問隔離和橫向擴展,同時徹底解決了NameNode單點故障問題;
  • 針對Hadoop1.0中的MapReduce在擴展性和多框架支持等方面的不足,它將JobTracker中的資源管理和作業控制分開,分別由ResourceManager(負責所有應用程序的資源分配)和ApplicationMaster(負責管理一個應用程序)實現,即引入了資源管理框架Yarn。
  • Yarn作為Hadoop2.0中的資源管理系統,它是一個通用的資源管理模塊,可為各類應用程序進行資源管理和調度,不僅限于MapReduce一種框架,也可以為其他框架使用,如Tez、Spark、Storm等
  • MapReduce計算框架區別

    MapReduce1.0計算框架主要由三部分組成:編程模型、數據處理引擎和運行時環境。它的基本編程模型是將問題抽象成Map和Reduce兩個階段,其中Map階段將輸入的數據解析成key/value,迭代調用map()函數處理后,再以key/value的形式輸出到本地目錄,Reduce階段將key相同的value進行規約處理,并將最終結果寫到HDFS上;它的數據處理引擎由MapTask和ReduceTask組成,分別負責Map階段邏輯和Reduce階段的邏輯處理;它的運行時環境由一個JobTracker和若干個TaskTracker兩類服務組成,其中JobTracker負責資源管理和所有作業的控制,TaskTracker負責接收來自JobTracker的命令并執行它。
    MapReducer2.0具有與MRv1相同的編程模型和數據處理引擎,唯一不同的是運行時環境。MRv2是在MRv1基礎上經加工之后,運行于資源管理框架Yarn之上的計算框架MapReduce。它的運行時環境不再由JobTracker和TaskTracker等服務組成,而是變為通用資源管理系統Yarn和作業控制進程ApplicationMaster,其中Yarn負責資源管理的調度而ApplicationMaster負責作業的管理。

    Hadoop1與Hadoop2的區分還是非常大,HDFS和MR都有不同,最起碼的配置文件就不一樣。項目應用的話,建議盡量往高版本走。穩健一點的話稍低于最高版本的一個穩定版本即可。

    1.2、MapReduce和HDFS

    什么是MapReduce

    MapReduce是一種編程模型,用于大規模數據集(大于1TB)的并行運算。概念"Map(映射)“和"Reduce(歸約)”,和它們的主要思想,都是從函數式編程語言里借來的,還有從矢量編程語言里借來的特性。它極大地方便了編程人員在不會分布式并行編程的情況下,將自己的程序運行在分布式系統上。 當前的軟件實現是指定一個Map(映射)函數,用來把一組鍵值對映射成一組新的鍵值對,指定并發的Reduce(歸約)函數,用來保證所有映射的鍵值對中的每一個共享相同的鍵組。
    重點:
    1、MapReduce是一種分布式計算模型,是Google提出的,主要用于搜索領域,解決海量數據的計算問題。
    2、MR有兩個階段組成:Map和Reduce,用戶只需實現map()和reduce()兩個函數,即可實現分布式計算。

    什么是HDFS

    DFS即分布式文件系統,分布式文件存儲在多個機器組成的集群中,用來管理分布式文件存儲的系統稱之為分布式文件系統。

    HDFS即Hadoop分布式文件系統,它擅長存儲大文件,流式讀取,運行于一般性的商業硬件上。HDFS不適合存儲大量的小文件,namenode會在內存中存儲元數據,通常情況下每個文件、目錄和塊都將占用150個字節;也不適合任意并發寫的場景,HDFS的寫文件操作是append的模式。

    1.3、NameNode和DataNode

    什么是Block

    在HDFS中,文件被分割成不同的塊存儲在集群的數據節點里,文件系統的元數據由文件系統集中管理。文件系統的塊通常是512字節,但是HDFS默認128M,但是和普通的文件系統相比,如果一個文件沒有達到128M,其并不會占滿整個塊。塊默認如此大是為了減少尋址時間。抽象出塊的概念的好處在于一個文件的大小可以超過整個磁盤,簡化存儲管理,很適合復制機制來實現高可用。

    什么是NameNode

    NameNode 是一個通常在 HDFS 實例中的單獨機器上運行的軟件。NameNode管理文件系統的命名空間,維護文件系統樹、所有文件、目錄以及塊的元數據,元數據有兩種namespace image和edit log。

    什么是DataNode

    DataNode 也是一個通常在 HDFS實例中的單獨機器上運行的軟件。NameNode擁有Block和DataNode之間的映射關系,但是它并不持久化這些信息,這些信息來源依賴于DataNode啟動時向NameNode發送的報告。DataNode維護著最終的Block,并定期向NameNode發送該DataNode包含的Block列表。

    1.4、JobTracker和TaskTracker

    什么是JobTracker

    JobTracker是一個后臺服務進程,啟動之后,會一直監聽并接收來自各個TaskTracker發送的心跳信息,包括資源使用情況和任務運行情況等信息。
    JobTracker的主要功能:

  • 作業控制:在hadoop中每個應用程序被表示成一個作業,每個作業又被分成多個任務,JobTracker的作業控制模塊則負責作業的分解和狀態監控。
    最重要的是狀態監控:主要包括TaskTracker狀態監控、作業狀態監控和任務狀態監控。主要作用:容錯和為任務調度提供決策依據。
  • 資源管理。
  • 什么是TaskTracker

    TaskTracker是JobTracker和Task之間的橋梁:一方面,從JobTracker接收并執行各種命令:運行任務、提交任務、殺死任務等;另一方面,
    將本地節點上各個任務的狀態通過心跳周期性匯報給JobTracker。TaskTracker與JobTracker和Task之間采用了RPC協議進行通信。
    TaskTracker的主要功能:

  • 匯報心跳:Tracker周期性將所有節點上各種信息通過心跳機制匯報給JobTracker。這些信息包括兩部分:
    機器級別信息:節點健康情況、資源使用情況等。
    任務級別信息:任務執行進度、任務運行狀態等。
  • 執行命令:JobTracker會給TaskTracker下達各種命令,主要包括:啟動任務(LaunchTaskAction)、提交任務(CommitTaskAction)、殺死任務(KillTaskAction)、
    殺死作業(KillJobAction)和重新初始化(TaskTrackerReinitAction)。
  • 1.5、ResourceManager和NodeManager

    ResourceManager 是基于應用程序對資源的需求進行調度的 ; 每一個應用程序需要不同類型的資源因此就需要不同的容器。ResourceManager 是一個中心的服務,它做的事情是調度、啟動每一個 Job 所屬的ApplicationMaster、另外監控 ApplicationMaster 的存在情況。

    NodeManager 是每一臺機器框架的代理,是執行應用程序的容器,監控應用程序的資源使用情況 (CPU,內存,硬盤,網絡 ) 并且向調度器(ResourceManager )匯報。
    ApplicationMaster 的職責有:向調度器索要適當的資源容器,運行任務,跟蹤應用程序的狀態和監控它們的進程,處理任務的失敗原因。

    2、Hadoop的簡單使用

    Hadoop集群的搭建請參考《CentOS7下Hadoop集群搭建》

    2.1 創建文件夾

    在HDFS上創建文件夾 /test/input

    [root@hadoop-master bin]# hadoop fs -mkdir -p /test/input

    2.2 查看創建的文件夾

    [root@hadoop-master bin]# hadoop fs -ls / Found 1 items drwxr-xr-x - root supergroup 0 2020-08-19 12:19 /test [root@hadoop-master bin]# hadoop fs -ls /test Found 1 items drwxr-xr-x - root supergroup 0 2020-08-19 12:19 /test/input

    2.3 上傳文件

    準備測試文件

    [root@hadoop-master test]# vi hw_hadoop.txt [root@hadoop-master test]# cat hw_hadoop.txt hello world leo825 hello world hadoop hello that girl hello that boy

    把文件上傳到HDFS的/test/input文件夾中

    [root@hadoop-master test]# hadoop fs -put ./hw_hadoop.txt /test/input

    檢查上傳結果

    [root@hadoop-master test]# hadoop fs -ls /test/input Found 1 items -rw-r--r-- 2 root supergroup 69 2020-08-19 12:26 /test/input/hw_hadoop.txt

    2.4 下載文件

    [root@hadoop-master local]# hadoop fs -get /test/input/hw_hadoop.txt ./ [root@hadoop-master local]# ll 總用量 12 drwxr-xr-x. 2 root root 6 4月 11 2018 bin drwxr-xr-x. 2 root root 6 4月 11 2018 etc drwxr-xr-x. 2 root root 6 4月 11 2018 games drwxr-xr-x. 4 root root 30 8月 8 10:59 hadoop -rw-r--r--. 1 root root 69 8月 19 16:52 hw_hadoop.txt

    2.5 運行一個mapreduce的demo程序:wordcount

    運行以下examples-2.7.3.jar程序中的wordcount

    hadoop jar /usr/local/hadoop/apps/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /test/input /test/output

    執行結果

    [root@hadoop-master test]# hadoop jar /usr/local/hadoop/apps/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /test/input /test/output 20/08/19 17:25:55 INFO client.RMProxy: Connecting to ResourceManager at hadoop-master/192.168.223.131:8032 20/08/19 17:25:56 INFO input.FileInputFormat: Total input paths to process : 1 20/08/19 17:25:56 INFO mapreduce.JobSubmitter: number of splits:1 20/08/19 17:25:57 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1597810488836_0001 20/08/19 17:25:57 INFO impl.YarnClientImpl: Submitted application application_1597810488836_0001 20/08/19 17:25:57 INFO mapreduce.Job: The url to track the job: http://hadoop-master:8088/proxy/application_1597810488836_0001/ 20/08/19 17:25:57 INFO mapreduce.Job: Running job: job_1597810488836_0001 20/08/19 17:26:08 INFO mapreduce.Job: Job job_1597810488836_0001 running in uber mode : false 20/08/19 17:26:08 INFO mapreduce.Job: map 0% reduce 0% 20/08/19 17:26:18 INFO mapreduce.Job: map 100% reduce 0% 20/08/19 17:26:25 INFO mapreduce.Job: map 100% reduce 100% 20/08/19 17:26:26 INFO mapreduce.Job: Job job_1597810488836_0001 completed successfully 20/08/19 17:26:26 INFO mapreduce.Job: Counters: 49File System CountersFILE: Number of bytes read=88FILE: Number of bytes written=237555FILE: Number of read operations=0FILE: Number of large read operations=0FILE: Number of write operations=0HDFS: Number of bytes read=184HDFS: Number of bytes written=54HDFS: Number of read operations=6HDFS: Number of large read operations=0HDFS: Number of write operations=2Job Counters Launched map tasks=1Launched reduce tasks=1Rack-local map tasks=1Total time spent by all maps in occupied slots (ms)=6450Total time spent by all reduces in occupied slots (ms)=4613Total time spent by all map tasks (ms)=6450Total time spent by all reduce tasks (ms)=4613Total vcore-milliseconds taken by all map tasks=6450Total vcore-milliseconds taken by all reduce tasks=4613Total megabyte-milliseconds taken by all map tasks=6604800Total megabyte-milliseconds taken by all reduce tasks=4723712Map-Reduce FrameworkMap input records=4Map output records=12Map output bytes=117Map output materialized bytes=88Input split bytes=115Combine input records=12Combine output records=7Reduce input groups=7Reduce shuffle bytes=88Reduce input records=7Reduce output records=7Spilled Records=14Shuffled Maps =1Failed Shuffles=0Merged Map outputs=1GC time elapsed (ms)=131CPU time spent (ms)=1490Physical memory (bytes) snapshot=290959360Virtual memory (bytes) snapshot=4160589824Total committed heap usage (bytes)=154607616Shuffle ErrorsBAD_ID=0CONNECTION=0IO_ERROR=0WRONG_LENGTH=0WRONG_MAP=0WRONG_REDUCE=0File Input Format Counters Bytes Read=69File Output Format Counters Bytes Written=54

    在YARN Web界面:http://192.168.223.131:8088/cluster


    查看輸出結果:

    [root@hadoop-master test]# hadoop fs -ls /test/output Found 2 items -rw-r--r-- 2 root supergroup 0 2020-08-19 17:26 /test/output/_SUCCESS -rw-r--r-- 2 root supergroup 54 2020-08-19 17:26 /test/output/part-r-00000 [root@hadoop-master test]# hadoop fs -cat /test/output/part-r-00000 boy 1 girl 1 hadoop 1 hello 4 leo825 1 that 2 world 2

    總結

    以上是生活随笔為你收集整理的Hadoop的基本概念和简单使用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。