蘋果新品釋出會 | 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 地址複製到上面的 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
即可檢視到輸出檔案中的單詞計數的結果