1. 程式人生 > 實用技巧 >蘋果新品釋出會 | iPhone12 系列正式公佈

蘋果新品釋出會 | iPhone12 系列正式公佈

Hadoop 組成

HDFS 架構

  • NameNode(nn) 儲存檔案的元資料,如檔名、檔案目錄結構、檔案屬性(生成時間、副本數、檔案許可權),以及每個檔案的塊列表和塊所在的 DataNode 等。
  • DataNode(dn) 在本地檔案系統儲存檔案快資料,以及塊資料的校驗和。
  • Secondary NameNode(2nn) 用來監控 HDFS 狀態的輔助後臺程式,每隔一段時間獲取 HDFS 元資料的快照。

YARN 架構

  • ResouceManager(RM)
    • 處理客戶端請求
    • 監控 NodeManager
    • 啟動或監控 ApplicationMaster
    • 資源的分配與排程
  • NodeManager(NM)
    • 管理單個節點上的資源
    • 處理來自 ResouceManager 的命令
    • 處理來自 ApplicationMaster 的命令
  • ApplicationMaster(AM)
    • 負責資料的切分
    • 為應用程式申請資源並分配給內部的任務
    • 任務的監控與容錯
  • Container
    • YARN 中的資源抽象,封裝了某個節點上的多維度資源,如記憶體、CPU、磁碟、網路等

MapReduce 架構

  • Map 階段並行處理輸入資料
  • Reduce 階段對 Map 結果進行彙總

生態體系

配置環境

使用 sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0 配置網路:

DEVICE=eth0
HWADDR=你的MAC地址
TYPE=Ethernet
UUID=
ONBOOT=yes	# 開機啟動
NM_CONTROLLED=yes
BOOTPROTO=static	# 方式

IPADDR=你的ip地址
GATEWAY=閘道器地址
DNS1=dns地址

使用 sudo vim /etc/sysconfig/network 配置 HOSTNAME :

NETWORKING=yes
HOSTNAME=你的hostname

如果是使用 VM 克隆出的虛擬機器,則需要修改 MAC 地址對應的 IP 地址:

使用 sudo vim /etc/udev/rules.d/70-persistent-net.rules

複製當前的 MAC 地址:

將 MAC 地址複製到上面的 ifcfg-eth0 檔案的 HWADDR 後面

使用 sudo vim /etc/hosts 將當前虛擬機器的 hostname 對映到 ip地址上:

建立一個普通使用者,然後使用 root 使用者sudo vim /etc/sudoers 給普通使用者 sudo 的許可權:

/opt 目錄下建立兩個目錄並修改所屬使用者和組,然後將 jdk 和 hadoop 檔案匯入至 software 資料夾:

[jkfx@hadoop101 ~]$ cd /opt
[jkfx@hadoop101 opt]$ sudo mkdir module
[sudo] password for jkfx:
[jkfx@hadoop101 opt]$ sudo mkdir software
[jkfx@hadoop101 opt]$ ll
總用量 12
drwxr-xr-x. 2 root root 4096 10月 16 10:38 module
drwxr-xr-x. 2 root root 4096 10月  4 2017 rh
drwxr-xr-x. 2 root root 4096 10月 16 10:38 software
[jkfx@hadoop101 opt]$ sudo rm -rf rh
[jkfx@hadoop101 opt]$ ll
總用量 8
drwxr-xr-x. 2 root root 4096 10月 16 10:38 module
drwxr-xr-x. 2 root root 4096 10月 16 10:38 software
[jkfx@hadoop101 opt]$ sudo chown jkfx:jkfx module/ software/
[jkfx@hadoop101 opt]$ cd software/
[jkfx@hadoop101 software]$ ls
hadoop-2.7.2.tar.gz  jdk-8u241-linux-x64.tar.gz

將 jdk 壓縮至 module 資料夾下然後在 /etc/profile 檔案配置 jdk 的目錄和 PATH 環境變數:

[jkfx@hadoop101 software]$ ls
hadoop-2.7.2.tar.gz  jdk-8u241-linux-x64.tar.gz
[jkfx@hadoop101 software]$ tar -zxf jdk-8u241-linux-x64.tar.gz -C /opt/module/
[jkfx@hadoop101 software]$ cd ../module/jdk1.8.0_241/
[jkfx@hadoop101 jdk1.8.0_241]$ pwd
/opt/module/jdk1.8.0_241
[jkfx@hadoop101 jdk1.8.0_241]$ sudo vim /etc/profile
[jkfx@hadoop101 jdk1.8.0_241]$ tail /etc/profile -n 5
## JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_241

export PATH=$PATH:$JAVA_HOME/bin

[jkfx@hadoop101 jdk1.8.0_241]$ source /etc/profile
[jkfx@hadoop101 jdk1.8.0_241]$ java -version
java version "1.8.0_241"
Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)

將 hadoop 壓縮檔案壓縮至 module 資料夾下再次配置 /etc/profile 檔案:

[jkfx@hadoop101 software]$ ls
hadoop-2.7.2.tar.gz  jdk-8u241-linux-x64.tar.gz
[jkfx@hadoop101 software]$ tar -zxf hadoop-2.7.2.tar.gz -C /opt/module/
[jkfx@hadoop101 software]$ cd ../module/hadoop-2.7.2/
[jkfx@hadoop101 hadoop-2.7.2]$ pwd
/opt/module/hadoop-2.7.2
[jkfx@hadoop101 hadoop-2.7.2]$ sudo vim /etc/profile
[jkfx@hadoop101 hadoop-2.7.2]$ tail /etc/profile -n 4
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

[jkfx@hadoop101 hadoop-2.7.2]$ source /etc/profile
[jkfx@hadoop101 hadoop-2.7.2]$ hadoop version
Hadoop 2.7.2

Hadoop 目錄結構

本地模式

  • Local (Standalone) Mode
  • Pseudo-Distributed Mode
  • Fully-Distributed Mode

Grep 案例

By default, Hadoop is configured to run in a non-distributed mode, as a single Java process. This is useful for debugging.

The following example copies the unpacked conf directory to use as input and then finds and displays every match of the given regular expression. Output is written to the given output directory.

  $ mkdir input
  $ cp etc/hadoop/*.xml input
  $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.1.jar grep input output 'dfs[a-z.]+'
  $ cat output/*

output 資料夾下檢視輸出結果:

WordCount 案例

[jkfx@hadoop101 hadoop-2.7.2]$ mkdir wcinput
[jkfx@hadoop101 hadoop-2.7.2]$ cd wcinput/
[jkfx@hadoop101 wcinput]$ vim wc.input
[jkfx@hadoop101 wcinput]$ cat wc.input
hadoop yarn
hadoop spark hive hbase
hadoop hdfs
hadoop mapreduce
hadoop
jkfx
jkfx

[jkfx@hadoop101 wcinput]$ cd ..
[jkfx@hadoop101 hadoop-2.7.2]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount wcinput wcoutput

然後到 wcoutput 目錄下檢視執行結果:

[jkfx@hadoop101 hadoop-2.7.2]$ cd wcoutput/
[jkfx@hadoop101 wcoutput]$ ll
總用量 4
-rw-r--r--. 1 jkfx jkfx 65 10月 16 11:40 part-r-00000
-rw-r--r--. 1 jkfx jkfx  0 10月 16 11:40 _SUCCESS
[jkfx@hadoop101 wcoutput]$ cat part-r-00000
hadoop  5
hbase   1
hdfs    1
hive    1
jkfx    2
mapreduce       1
spark   1
yarn    1

即可檢視到輸出檔案中的單詞計數的結果