1、Hadoop概述:
Hadoop是一個由Apache基金會所開發的分佈式系統基礎架構。用戶能夠在不瞭解分佈式底層細節的狀況下,開發分佈式程序。充分利用集羣的威力進行高速運算和存儲。Hadoop的框架最核心的設計就是:HDFS和MapReduce。HDFS分佈式文件系統爲海量的數據提供了存儲,則MapReduce爲海量的數據提供了計算。html
網方網站:http://hadoop.apache.org/
Hadoop是一個由Apache基金會所開發的分佈式系統基礎架構java
hadoop基於java開的。node
Hadoop包括兩大核心,分佈式存儲系統和分佈式計算系統。
分佈式存儲
爲何數據須要存儲在分佈式的系統中哪,難道單一的計算機存儲不了嗎,難道如今的幾個TB的硬盤裝不下這些數據嗎?事實上,確實裝不下。好比,不少的電信通話記錄就存儲在不少臺服務器的不少硬盤中。那麼,要處理這麼多數據,必須從一臺一臺服務器分別讀取數據和寫入數據,太麻煩了!
咱們但願有一種文件系統,能夠管轄不少服務器用於存儲數據。經過這個文件系統存儲數據時,感受不到是存儲到不一樣的服務器上的。當讀取數據時,感受不到是從不一樣的服務器上讀取。linux
如圖:這就是分佈式文件系統。web
分佈式文件系統管理的是一個服務器集羣。在這個集羣中,數據存儲在集羣的節點(即集羣中的服務器)中,可是該文件系統把服務器的差別屏蔽了。那麼,咱們就能夠像使用普通的文件系統同樣使用,可是數據卻分散在不一樣的服務器中。apache
命名空間(namespace):在分佈式存儲系統中,分散在不一樣節點中的數據可能屬於同一個文件,爲了組織衆多的文件,把文件能夠放到不一樣的文件夾中,文件夾能夠一級一級的包含。咱們把這種組織形式稱爲命名空間(namespace)。命名空間管理着整個服務器集羣中的全部文件。命名空間的職責與存儲真實數據的職責是不同的。
負責命名空間職責的節點稱爲主節點(master node),負責存儲真實數據職責的節點稱爲從節點(slave node)。
主/從節點:主節點負責管理文件系統的文件結構,從節點負責存儲真實的數據,稱爲主從式結構(master-slaves)。用戶操做時,也應該先和主節點打交道,查詢數據在哪些從節點上存儲,而後再從從節點讀取。在主節點,爲了加快用戶訪問的速度,會把整個命名空間信息都放在內存中,當存儲的文件越多時,那麼主節點就須要越多的內存空間。編程
block:在從節點存儲數據時,有的原始數據文件可能很大,有的可能很小,大小不一的文件不容易管理,那麼能夠抽象出一個獨立的存儲文件單位,稱爲塊(block)。
容災: 數據存放在集羣中,可能由於網絡緣由或者服務器硬件緣由形成訪問失敗,最好採用副本(replication)機制,把數據同時備份到多臺服務器中,這樣數據就安全了,數據丟失或者訪問失敗的機率就小了。vim
如圖:
工做流程圖:安全
名詞解釋
(1)Hadoop:Apache開源的分佈式框架。
(2)HDFS:Hadoop的分佈式文件系統。
(3)NameNode:Hadoop HDFS元數據主節點服務器,負責保存DataNode 文件存儲元數據信息,這個服務器是單點的。
(4)JobTracker:Hadoop的Map/Reduce調度器,負責與TaskTracker通訊分配計算任務並跟蹤任務進度,這個服務器也是單點的。
(5)DataNode:Hadoop數據節點,負責存儲數據。
(6)TaskTracker:Hadoop調度程序,負責Map,Reduce任務的啓動和執行。
Namenode記錄着每一個文件中各個塊所在的數據節點的位置信息bash
Hadoop1的組件依賴關係圖
在以上的主從式結構中,因爲主節點含有整個文件系統的目錄結構信息,由於很是重要。另外,因爲主節點運行時會把命名空間信息都放到內存中,所以存儲的文件越多,主節點的內存就須要的越多。
在hadoop中,分佈式存儲系統稱爲HDFS(hadoop distributed file system)。其中,主節點稱爲名字節點(namenode),從節點稱爲數據節點(datanode)。
分佈式計算:
對數據進行處理時,咱們會把數據讀取到內存中進行處理。若是咱們對海量數據進行處理,好比數據大小是100GB,咱們要統計文件中一共有多少個單詞。要想把數據都加載到內存中幾乎是不可能的,稱爲移動數據。那麼是否能夠把程序代碼放到存放數據的服務器上哪?由於程序代碼與原始數據相比,通常很小,幾乎能夠忽略的,因此省下了原始數據傳輸的時間了。如今,數據是存放在分佈式文件系統中,100GB的數據可能存放在不少的服務器上,那麼就能夠把程序代碼分發到這些服務器上,在這些服務器上同時執行,也就是並行計算,也是分佈式計算。這就大大縮短了程序的執行時間。咱們把程序代碼移動到數據節點的機器上執行的計算方式稱爲移動計算。分佈式計算須要的是最終的結果,程序代碼在不少機器上並行執行後會產生不少的結果,所以須要有一段代碼對這些中間結果進行彙總。
Hadoop中的分佈式計算通常是由兩階段完成的。第一階段負責讀取各數據節點中的原始數據,進行初步處理,對各個節點中的數據求單詞數。而後把處理結果傳輸到第二個階段,對中間結果進行彙總,產生最終結果,求出100GB文件總共有多少個單詞,如圖所示:
在hadoop中,分佈式計算部分稱爲MapReduce。
MapReduce是一種編程模型,用於大規模數據集(大於1TB)的並行運算。概念"Map(映射)"和"Reduce(歸約)",和它們的主要思想,都是從函數式編程語言裏借來的,還有從矢量編程語言裏借來的特性。它極大地方便了編程人員在不會分佈式並行編程的狀況下,將本身的程序運行在分佈式系統上。 當前的軟件實現是指定一個Map(映射)函數,用來把一組鍵值對映射成一組新的鍵值對,指定併發的Reduce(歸約)函數,用來保證全部映射的鍵值對中的每個共享相同的鍵組。
主節點稱爲做業節點(job tracker),
從節點稱爲任務節點(task tracker)。
在任務節點中,運行第一階段的代碼稱爲map任務(map task),運行第二階段的代碼稱爲reduce任務(reduce task)。
task [英] [tɑ:sk] 任務
tracker [英] [ˈtrækə(r)] 跟蹤器
下載jdk1.8 for Linux壓縮包,hadoop3.0.0壓縮包。下載連接分別以下:
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
http://hadoop.apache.org/releases.html
2、實戰:搭建Hadoop集羣:
實驗環境
安裝前,3臺虛擬機IP及機器名稱以下:
主機名 IP地址 角色
xuegod63.cn 192.168.1.63 NameNode
xuegod64.cn 192.168.1.64 DataNode1
xuegod62.cn 192.168.1.62 DataNode2
1.實驗前期環境準備:
(1)三臺機器上配置hosts文件,以下:
[root@xuegod63 ~]# vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.63 xuegod63.cn 192.168.1.64 xuegod64.cn 192.168.1.62 xuegod62.cn
(2)複製hosts到其它兩機器:
[root@xuegod63 ~]# scp /etc/hosts root@192.168.1.64:/etc/ [root@xuegod63 ~]# scp /etc/hosts root@192.168.1.62:/etc/ 注意:在/etc/hosts中,不要把機器名字,同時對應到127.0.0.1這個地址,不然會致使數據節點鏈接不上namenode,報錯以下: org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.1.10:9000
(3)建立運行hadoop用戶帳號和Hadoop目錄。 儘可能不用root賬號運行
xuegod63: [root@xuegod63 ~]# useradd -u 8000 hadoop #爲了保障,在其它服務器上建立的hadoop用戶ID保持一致,建立時,儘可能把UID調大 [root@xuegod63 ~]# echo 123456 | passwd --stdin hadoop [root@xuegod64 ~]# useradd -u 8000 hadoop [root@xuegod64 ~]# echo 123456 | passwd --stdin hadoop [root@xuegod62 ~]# useradd -u 8000 hadoop [root@xuegod62 ~]# echo 123456 | passwd --stdin hadoop 注:建立用戶hadoop時,不能使用參數-s /sbin/nologin ,由於稍後咱們要su - hadoop 切換用戶
(4)給hadoop帳戶增長sudo權限: vim /etc/sudoers ,增長內容:
[root@xuegod63 ~]# vim /etc/sudoers
hadoop ALL=(ALL) ALL
注意:以上對於每一臺機器都要執行
配置在xuegod63上,能夠ssh無密碼登陸機器xuegod63,xuegod64,xuegod62 ,方便後期複製文件和啓動服務。由於namenode啓動時,會鏈接到datanode上啓動對應的服務。
生成公鑰和私鑰
注意:切換到hadoop用戶再操做
[root@xuegod63 ~]# su - hadoop [hadoop@xuegod63 ~]$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: b6:be:c5:0f:d5:70:52:cf:5f:7a:a4:c1:bd:26:b9:84 root@xuegod63.cn The key's randomart image is: +--[ RSA 2048]----+ | . | | o + | | o + *| | .=.=+| | S E.++oo| | . o .. +. | | . + . | | . . o | | o. . | +-----------------+ 導入公鑰到其餘datanode節點認證文件 [hadoop@xuegod63 ~]$ ssh-copy-id root@192.168.1.62 [hadoop@xuegod63 ~]$ ssh-copy-id root@192.168.1.64
二、配置Hadoop環境
1. xuegod63安裝Java環境JDK:三臺機器上都要配置
上傳jdk-8u161-linux-x64.rpm軟件包到xuegod63
一、解壓到對應的文件夾 [root@xuegod63 ~]# tar zxf jdk-linux-x64.tar.gz -C /usr/local/ [root@xuegod63 ~]# vim /etc/profile #在文件的最後添加如下內容: JAVA_HOME=/usr/local/jdk1.8.0_131 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar export PATH JAVA_HOME CLASSPATH [root@xuegod63 ~]# source /etc/profile #使配置文件生效 驗證java運行環境是否安裝成功: [root@xuegod63 ~]# java -version java version "1.8.0_161" Java(TM) SE Runtime Environment (build 1.8.0_161-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode) 若是出現安裝的對應版本,說明java運行環境已經安裝成功。 注:這裏只是升級了jdk的版本,由於在我安裝的系統中已經安裝了jdk。 將jdk部署到其它兩臺機器上: [root@xuegod63 ~]# scp jdk-8u161-linux-x64.rpm root@192.168.1.62:/root [root@xuegod63 ~]# scp jdk-8u161-linux-x64.rpm root@192.168.1.64:/root [root@xuegod63 ~]# scp /etc/profile 192.168.1.62:/etc/profile [root@xuegod63 ~]# scp /etc/profile 192.168.1.64:/etc/profile 安裝: [root@xuegod64 ~]# rpm -ivh jdk-8u161-linux-x64.rpm [root@xuegod62 ~]# rpm -ivh jdk-8u161-linux-x64.rpm 從新參加java運行環境: [root@xuegod64 ~]# source /etc/profile [root@xuegod62 ~]# source /etc/profile 測試: [root@xuegod64 ~]# java -version java version "1.7.0_71" Java(TM) SE Runtime Environment (build 1.7.0_71-b14) Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode) [root@xuegod62 ~]# java -version java version "1.7.0_71" Java(TM) SE Runtime Environment (build 1.7.0_71-b14) Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode) 三臺機器關閉防火牆: [root@xuegod63 ~]# systemctl stop firewalld.service [root@xuegod63 ~]# systemctl disable firewalld.service [root@xuegod62 ~]# systemctl stop firewalld.service [root@xuegod62 ~]# systemctl disable firewalld.service [root@xuegod64 ~]# systemctl stop firewalld.service [root@xuegod64 ~]# systemctl disable firewalld.service
2.在xuegod63安裝Hadoop 並配置成namenode主節點
Hadoop安裝目錄:/home/hadoop/hadoop-3.0.0 使用root賬號將hadoop-3.0.0.tar.gz 上傳到服務器 [root@xuegod63 ~]# mv hadoop-3.0.0.tar.gz /home/hadoop/ 注意:如下步驟使用hadoop帳號操做。 [root@xuegod63 ~]# su - hadoop [hadoop@xuegod63 ~]$ tar zxvf hadoop-3.0.0.tar.gz #只要解壓文件就能夠,不須要編譯安裝 建立hadoop相關的工做目錄 [hadoop@xuegod63 ~]$ mkdir -p /home/hadoop/dfs/name /home/hadoop/dfs/data /home/hadoop/tmp [hadoop@xuegod623 ~]$ ls dfs hadoop-3.0.0 hadoop-3.0.0.tar.gz tmp
3. 配置Hadoop:須要修改7個配置文件。
文件位置:/home/hadoop/hadoop-3.0.0/etc/hadoop/
文件名稱:hadoop-env.sh、yarn-evn.sh、workers、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml
一、配置文件hadoop-env.sh,指定hadoop的java運行環境
該文件是hadoop運行基本環境的配置,須要修改的爲java虛擬機的位置。
[hadoop@xuegod63 hadoop-3.0.0]$ vim /home/hadoop/hadoop-3.0.0/etc/hadoop/hadoop-env.sh 改:54 # export JAVA_HOME= 爲:export JAVA_HOME=/usr/local/jdk1.8.0_131 注:指定java運行環境變量
二、配置文件yarn-env.sh,保存yarn框架的運行環境
該文件是yarn框架運行環境的配置,一樣須要修改java虛擬機的位置。
yarn :Hadoop 的新 MapReduce 框架Yarn是Hadoop 自 0.23.0 版本後新的 map-reduce 框架(Yarn) 原理 。
[hadoop@xuegod63 hadoop-3.0.0]$ vim /home/hadoop/hadoop-3.0.0/etc/hadoop/yarn-env.sh 不須要修改。 查看優先規則: 21## Precedence rules: 22## 23## yarn-env.sh > hadoop-env.sh > hard-coded defaults Precedence [ˈpresɪdəns] 優先
三、配置文件core-site.xml,指定訪問hadoop web界面訪問路徑
這個是hadoop的核心配置文件,這裏須要配置的就這兩個屬性,fs.default.name配置了hadoop的HDFS系統的命名,位置爲主機的9000端口;
hadoop.tmp.dir配置了hadoop的tmp目錄的根位置。這裏使用了一個文件系統中沒有的位置,因此要先用mkdir命令新建一下。
[hadoop@xuegod63 hadoop-3.0.0]$ vim /home/hadoop/hadoop-3.0.0/etc/hadoop/core-site.xml 改: 19 <configuration> 20 </configuration> 注: 在<configuration>和</configuration>中間插入以一下紅色和藍色標記內容: 爲: <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://xuegod63.cn:9000</value> </property> <property> <name>io.file.buffer.size</name> <value>13107</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/home/hadoop/tmp</value> <description>Abase for other temporary directories.</description> </property> </configuration> 注:property 財產 [ˈprɒpəti] io.file.buffer.size 的默認值 4096 。這是讀寫 sequence file 的 buffer size, 可減小 I/O 次數。在大型的 Hadoop cluster,建議可設定爲 65536
四、配置文件hdfs-site.xml
這個是hdfs的配置文件,dfs.http.address配置了hdfs的http的訪問位置;
dfs.replication配置了文件塊的副本數,通常不大於從機的個數。
[root@xuegod63 ~]# vim /home/hadoop/hadoop-3.0.0/etc/hadoop/hdfs-site.xml 改:19 <configuration> 20 21 </configuration> 注: 在<configuration>和</configuration>中間插入以一下紅色和藍色標記內容: 爲: <configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>xuegod63.cn:9001</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/home/hadoop/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/home/hadoop/dfs/data</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> </configuration> 注: <property> <name>dfs.namenode.secondary.http-address</name> <value>xuegod63.cn:9001</value> # 經過web界面來查看HDFS狀態 </property> <property> <name>dfs.replication</name> <value>2</value> #每一個Block有2個備份。 </property>
六、配置文件mapred-site.xml
這個是mapreduce任務的配置,因爲hadoop2.x使用了yarn框架,因此要實現分佈式部署,必須在mapreduce.framework.name屬性下配置爲yarn。mapred.map.tasks和mapred.reduce.tasks分別爲map和reduce的任務數,同時指定:Hadoop的歷史服務器historyserver,Hadoop自帶了一個歷史服務器,能夠經過歷史服務器查看已經運行完的Mapreduce做業記錄,好比用了多少個Map、用了多少個Reduce、做業提交時間、做業啓動時間、做業完成時間等信息。默認狀況下,Hadoop歷史服務器是沒有啓動的,咱們能夠經過下面的命令來啓動Hadoop歷史服務器
$ /home/hadoop/hadoop-3.0.0/sbin/mr-jobhistory-daemon.sh start historyserver
historyserverWARNING: Use of this script to start the MR JobHistory daemon is deprecated.
WARNING: Attempting to execute replacement "mapred --daemon start" instead.
WARNING: /home/hadoop/hadoop-3.0.0/logs does not exist. Creating.
這樣咱們就能夠在相應機器的19888端口上打開歷史服務器的WEB UI界面。能夠查看已經運行完的做業狀況。
修改mapred-site.xml
[hadoop@xuegod63 hadoop-3.0.0]$ vim /home/hadoop/hadoop-3.0.0/etc/hadoop/mapred-site.xml 改:19 <configuration> 20 21 </configuration> 注: 在<configuration>和</configuration>中間插入以一下紅色和藍色標記內容: 爲: <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>0.0.0.0:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>0.0.0.0:19888</value> </property> </configuration>
七、配置節點yarn-site.xml
該文件爲yarn框架的配置,主要是一些任務的啓動位置
[hadoop@xuegod63 hadoop-3.0.0]$ vim /home/hadoop/hadoop-3.0.0/etc/hadoop/yarn-site.xml # 修改configuration內容以下: 改: <configuration> <!-- Site specific YARN configuration properties --> </configuration> 注: 在<configuration>和</configuration>中間插入以一下紅色和藍色標記內容: 爲: <configuration> <!-- Site specific YARN configuration properties --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>xuegod63.cn:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>xuegod63.cn:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>xuegod63.cn:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>xuegod63.cn:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>xuegod63.cn:8088</value> </property> <property> <name>yarn.application.classpath</name> <value>/home/hadoop/hadoop-3.0.0/etc/hadoop:/home/hadoop/hadoop-3.0.0/share/hadoop/common/lib/*:/home/hadoop/hadoop-3.0.0/share/hadoop/common/*:/home/hadoop/hadoop-3.0.0/share/hadoop/hdfs:/home/hadoop/hadoop-3.0.0/share/hadoop/hdfs/lib/*:/home/hadoop/hadoop-3.0.0/share/hadoop/hdfs/*:/home/hadoop/hadoop-3.0.0/share/hadoop/mapreduce/*:/home/hadoop/hadoop-3.0.0/share/hadoop/yarn:/home/hadoop/hadoop-3.0.0/share/hadoop/yarn/lib/*:/home/hadoop/hadoop-3.0.0/share/hadoop/yarn/* </value> </property> </configuration>
八、編輯datanode節點host
[hadoop@xuegod63 hadoop]$ vim workers xuegod62.cn xuegod64.cn 複製到其餘datanode節點: xuegod64和xuegod62 [hadoop@xuegod63 hadoop-3.0.0]$ scp core-site.xml hadoop-env.sh hdfs-site.xml mapred-site.xml yarn-site.xml workers 192.168.1.62:/home/hadoop/hadoop-3.0.0/etc/hadoop/ [hadoop@xuegod63 hadoop-3.0.0]$ scp core-site.xml hadoop-env.sh hdfs-site.xml mapred-site.xml yarn-site.xml workers 192.168.1.64:/home/hadoop/hadoop-3.0.0/etc/hadoop/
在xuegod63上啓動Hadoop
切換到hadoop用戶
[root@xuegod63 ~]# su - hadoop
(3)格式化
hadoop namenode的初始化,只須要第一次的時候初始化,以後就不須要了
查看格式化後,生成的文件:
[root@xuegod63 ~]# rpm -ivh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm [hadoop@xuegod63 ~]$ tree /home/hadoop/dfs/ /home/hadoop/dfs/ ├── data └── name └── current ├── fsimage_0000000000000000000 ├── fsimage_0000000000000000000.md5 ├── seen_txid └── VERSION 生成基於hadoop用戶的不輸入密碼登陸:由於後期使用hadoop用戶啓動datanode節點使用須要直接登陸到對應的服務器上啓動datanode相關服務。 [hadoop@xuegod63 hadoop-3.0.0]$ ssh-keygen [hadoop@xuegod63 hadoop-3.0.0]$ ssh-copy-id 192.168.1.64 [hadoop@xuegod63 hadoop-3.0.0]$ ssh-copy-id 192.168.1.62 [hadoop@xuegod63 hadoop-3.0.0]$ ssh-copy-id 192.168.1.63
(4)啓動hdfs: ./sbin/start-dfs.sh,即啓動HDFS分佈式存儲
[root@xuegod63 hadoop-3.0.0]# /home/hadoop/hadoop-3.0.0/sbin/start-dfs.sh Starting namenodes on [xuegod63.cn] xuegod63.cn: starting namenode, logging to /home/hadoop/hadoop-3.0.0/logs/hadoop-root-namenode-xuegod63.cn.out xuegod64.cn: starting datanode, logging to /home/hadoop/hadoop-3.0.0/logs/hadoop-root-datanode-xuegod64.cn.out xuegod62.cn: starting datanode, logging to /home/hadoop/hadoop-3.0.0/logs/hadoop-root-datanode-xuegod62.cn.out Starting secondary namenodes [xuegod63.cn] xuegod63.cn: starting secondarynamenode, logging to /home/hadoop/hadoop-3.0.0/logs/hadoop-root-secondarynamenode-xuegod63.cn.out 注:若是報錯,如: xuegod64.cn: Host key verification failed. 解決: [hadoop@xuegod63 ~]$ ssh 192.168.1.64 #確承認以不輸入密碼直接鏈接上xuegod64 關閉後再重啓: [root@xuegod63 hadoop-3.0.0]# /home/hadoop/hadoop-3.0.0/sbin/stop-dfs.sh [root@xuegod63 hadoop-3.0.0]# /home/hadoop/hadoop-3.0.0/sbin/start-dfs.sh
(5)查看進程,此時master有進程:namenode和 secondarynamenode進程:
[root@xuegod63 ~]# ps -axu | grep namenode --color Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ root 8214 4.1 9.5 1882176 110804 ? Sl 17:39 0:17 /usr/java/jdk1.8.0_161/bin/java -Dproc_namenode -Xmx1000m 。。。 -Dhadoop.log.dir=/home/hadoop/hadoop-3.0.0/logs -Dhadoop.log.file=hadoop-root-secondarynamenode-xuegod63.cn.log xuegod64和xuegod62上有進程:DataNode [root@xuegod64 ~]# ps -axu | grep datanode --color Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ root 5749 8.8 5.2 1851956 60656 ? Sl 17:55 0:06 /usr/java/jdk1.8.0_161/bin/java -Dproc_datanode -Xmx1000m 。。。
(6)在xuegod63上啓動yarn: ./sbin/start-yarn.sh 即,啓動分佈式計算
[hadoop@xuegod63 hadoop-3.0.0]# /home/hadoop/hadoop-3.0.0/sbin/start-yarn.sh starting yarn daemons starting resourcemanager, logging to /home/hadoop/hadoop-3.0.0/logs/yarn-root-resourcemanager-xuegod63.cn.out xuegod62.cn: starting nodemanager, logging to /home/hadoop/hadoop-3.0.0/logs/yarn-root-nodemanager-xuegod62.cn.out xuegod64.cn: starting nodemanager, logging to /home/hadoop/hadoop-3.0.0/logs/yarn-root-nodemanager-xuegod64.cn.out
(7)查看進程:
查看xuegod63上的ResourceManager進程,xuegod62和xuegod64上的進程:DataNode NodeManager
[root@xuegod63 ~]# ps -axu | grep resourcemanager --color Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ root 9664 0.2 11.0 2044624 128724 pts/3 Sl 17:58 0:27 /usr/java/jdk1.8.0_161/bin/java -Dproc_resourcemanager -Xmx1000m [root@xuegod62 ~]# ps -axu | grep nodemanager --color Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ hadoop 5486 31.8 7.8 1913012 91692 ? Sl 23:01 0:20 /usr/java/jdk1.8.0_161/bin/java -Dproc_nodemanager -Xmx1000m -Dhadoop.log.dir=/home/hadoop/hadoop-3.0.0/logs [root@xuegod64 ~]# ps -axu | grep nodemanager --color Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ hadoop 2872 20.8 7.9 1913144 92860 ? Sl 21:42 0:15 /usr/java/jdk1.8.0_161/bin/java -Dproc_nodemanager -Xmx1000m 注:start-dfs.sh 和 start-yarn.sh 這兩個腳本可用start-all.sh代替。 [hadoop@xuegod63 ~]$ /home/hadoop/hadoop-3.0.0/sbin/start-all.sh 關閉: [hadoop@xuegod63 ~]$ /home/hadoop/hadoop-3.0.0/sbin/stop-all.sh 啓動: jobhistory服務,查看mapreduce運行狀態 [hadoop@xuegod63 hadoop-3.0.0]# /home/hadoop/hadoop-3.0.0/sbin/mr-jobhistory-daemon.sh start historyserver starting historyserver, logging to /home/hadoop/hadoop-3.0.0/logs/mapred-root-historyserver-xuegod63.cn.out 在主節點上啓動存儲服務和資源管理主服務。使用命令: [hadoop@xuegod63 ~]$ /home/hadoop/hadoop-3.0.0/sbin/hadoop-daemon.sh start datanode #啓動從存儲服務 [hadoop@xuegod63 ~]$ /home/hadoop/hadoop-3.0.0/sbin/yarn-daemon.sh start nodemanager #啓動資源管理從服務 登陸從結點:啓動存儲從服務和資源管理從服務 [hadoop@xuegod62 ~]$ /home/hadoop/hadoop-3.0.0/sbin/hadoop-daemon.sh start datanode #啓動從存儲服務 [hadoop@xuegod62 ~]$ /home/hadoop/hadoop-3.0.0/sbin/yarn-daemon.sh start nodemanager #啓動資源管理從服務 [hadoop@xuegod64 ~]$ /home/hadoop/hadoop-3.0.0/sbin/hadoop-daemon.sh start datanode #啓動從存儲服務 [hadoop@xuegod64 ~]$ /home/hadoop/hadoop-3.0.0/sbin/yarn-daemon.sh start nodemanager #啓動資源管理從服務
(8)查看HDFS分佈式文件系統狀態:
[hadoop@xuegod63 hadoop-3.0.0]$ /home/hadoop/hadoop-3.0.0/bin/hdfs dfsadmin -report 。。。 ------------------------------------------------- Datanodes available: 1 (1 total, 0 dead) Live datanodes: Name: 192.168.1.62:50010 (xuegod62.cn) Hostname: xuegod62.cn Decommission Status : Normal Configured Capacity: 10320982016 (9.61 GB) DFS Used: 24576 (24 KB) Non DFS Used: 4737789952 (4.41 GB) DFS Remaining: 5583167488 (5.20 GB) DFS Used%: 0.00% DFS Remaining%: 54.10% Last contact: Sun May 31 21:58:00 CST 2015 Name: 192.168.1.64:50010 (xuegod64.cn) Hostname: xuegod64.cn Decommission Status : Normal Configured Capacity: 10320982016 (9.61 GB) DFS Used: 24576 (24 KB) Non DFS Used: 5014945792 (4.67 GB) DFS Remaining: 5306011648 (4.94 GB) DFS Used%: 0.00% DFS Remaining%: 51.41% Last contact: Mon Aug 03 23:00:03 CST 2015
(9)查看文件塊組成部分:
[hadoop@xuegod63 hadoop-3.0.0]$ ./bin/hdfs fsck / -files -blocks
或:
http://192.168.1.63:9870/dfshealth.html#tab-datanode
(10)經過web界面來查看HDFS狀態: http://192.168.1.63:9001/status.html
(11)經過Web查看hadoop集羣狀態: http://192.168.1.63:8088
(12)查看JobHistory的內容:
http://192.168.1.63:19888/jobhistory
(13)設置HADOOP_HOME環境變量,方便後期調用命令。
[root@xuegod63 ~]# vim /etc/profile #添加追加如下內容: export HADOOP_HOME=/home/hadoop/hadoop-3.0.0 export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH [root@xuegod63 ~]# source /etc/profile [root@xuegod63 ~]# start #輸入start 按兩下tab鍵,測試命令補齊
測試:
運行Hadoop計算任務,Word Count 字數統計
[hadoop@xuegod63 ~]$ source /etc/profile (1)/home/hadoop目錄下有兩個文本文件file01.txt和file02.txt,文件內容分別爲: [hadoop@xuegod63 ~]$ vim file01.txt man kong man Hello World mk [hadoop@xuegod63 ~]$ vim file02.txt mk www.xuegod.cn cd cat man (2)將這兩個文件放入hadoop的HDFS中: [hadoop@xuegod63 ~]$ hadoop fs -ls //查看hdfs目錄狀況 ls: `.': No such file or directory [hadoop@xuegod63 ~]$ hadoop fs -mkdir -p input [hadoop@xuegod63 ~]$ hadoop fs -put /home/hadoop/file*.txt input [hadoop@xuegod63 ~]$ hadoop fs -cat input/file01.txt //查看命令 man kong man Hello World mk (3)計執行 wordCount單詞統計彙總並查看結果: [hadoop@xuegod63 ~] hadoop jar hadoop-3.0.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.0.jar wordcount input output 查看運行以後產生的文件 hadoop fs -ls output 查看運行結果 hadoop fs -cat output/part-r-00000 能夠看到數據都已經被統計出來了。