Hadoop是Lucene創始人Doug Cutting,根據Google的相關內容山寨出來的分佈式文件系統和對海量數據進行分析計算的基礎框架系統,其中包含MapReduce程序,hdfs系統等。
網方網站:http://hadoop.apache.org/
Hadoop是一個由Apache基金會所開發的分佈式系統基礎架構。
下載:
http://hadoop.apache.org/releases.html
hadoop基於java開發的。
Hadoop包括兩大核心,分佈式存儲系統和分佈式計算系統。
分佈式存儲
爲什麼數據需要存儲在分佈式的系統中哪,難道單一的計算機存儲不了嗎,難道現在的幾個TB的硬盤裝不下這些數據嗎?事實上,確實裝不下。比如,很多的電信通話記錄就存儲在很多臺服務器的很多硬盤中。那麼,要處理這麼多數據,必須從一臺一臺服務器分別讀取數據和寫入數據,太麻煩了!
我們希望有一種文件系統,可以管轄很多服務器用於存儲數據。通過這個文件系統存儲數據時,感覺不到是存儲到不同的服務器上的。當讀取數據時,感覺不到是從不同的服務器上讀取。
如圖:這就是分佈式文件系統。
分佈式文件系統管理的是一個服務器集羣。在這個集羣中,數據存儲在集羣的節點(即集羣中的服務器)中,但是該文件系統把服務器的差異屏蔽了。那麼,我們就可以像使用普通的文件系統一樣使用,但是數據卻分散在不同的服務器中。
命名空間(namespace):在分佈式存儲系統中,分散在不同節點中的數據可能屬於同一個文件,爲了組織衆多的文件,把文件可以放到不同的文件夾中,文件夾可以一級一級的包含。我們把這種組織形式稱爲命名空間(namespace)。命名空間管理着整個服務器集羣中的所有文件。命名空間的職責與存儲真實數據的職責是不一樣的。
負責命名空間職責的節點稱爲主節點(master node),負責存儲真實數據職責的節點稱爲從節點(slave node)。
主/從節點:主節點負責管理文件系統的文件結構,從節點負責存儲真實的數據,稱爲主從式結構(master-slaves)。
用戶操作時,也應該先和主節點打交道,查詢數據在哪些從節點上存儲,然後再從從節點讀取。在主節點,爲了加快用戶訪問的速度,會把整個命名空間信息都放在內存中,當存儲的文件越多時,那麼主節點就需要越多的內存空間。
block:在從節點存儲數據時,有的原始數據文件可能很大,有的可能很小,大小不一的文件不容易管理,那麼可以抽象出一個獨立的存儲文件單位,稱爲塊(block)。
容災: 數據存放在集羣中,可能因爲網絡原因或者服務器硬件原因造成訪問失敗,最好採用副本(replication)機制,把數據同時備份到多臺服務器中,這樣數據就安全了,數據丟失或者訪問失敗的概率就小了。
工作流程圖:
總結:
在以上的主從式結構中,由於主節點含有整個文件系統的目錄結構信息,因此它非常重要。另外,由於主節點運行時會把命名空間信息都放到內存中,因此存儲的文件越多,主節點的內存就需要的越多。
在hadoop中,分佈式存儲系統稱爲HDFS(hadoop distributed file system)。其中,主節點稱爲名字節點(namenode),從節點稱爲數據節點(datanode)。
分佈式計算:
對數據進行處理時,我們會把數據讀取到內存中進行處理。如果我們對海量數據進行處理,比如數據大小是100GB,我們要統計文件中一共有多少個單詞。要想把數據都加載到內存中幾乎是不可能的,稱爲移動數據。
那麼是否可以把程序代碼放到存放數據的服務器上哪?因爲程序代碼與原始數據相比,一般很小,幾乎可以忽略的,所以省下了原始數據傳輸的時間了。現在,數據是存放在分佈式文件系統中,100GB的數據可能存放在很多的服務器上,那麼就可以把程序代碼分發到這些服務器上,在這些服務器上同時執行,也就是並行計算,也是分佈式計算。這就大大縮短了程序的執行時間。我們把程序代碼移動到數據節點的機器上執行的計算方式稱爲移動計算。
分佈式計算需要的是最終的結果,程序代碼在很多機器上並行執行後會產生很多的結果,因此需要有一段代碼對這些中間結果進行彙總。Hadoop中的分佈式計算一般是由兩階段完成的。第一階段負責讀取各數據節點中的原始數據,進行初步處理,對各個節點中的數據求單詞數。然後把處理結果傳輸到第二個階段,對中間結果進行彙總,產生最終結果,求出100GB文件總共有多少個單詞。
如圖所示:
在hadoop中,分佈式計算部分稱爲MapReduce。
MapReduce是一種編程模型,用於大規模數據集(大於1TB)的並行運算。概念"Map(映射)"和"Reduce(歸約)",和它們的主要思想,都是從函數式編程語言裏借來的,還有從矢量編程語言裏借來的特性。它極大地方便了編程人員在不會分佈式並行編程的情況下,將自己的程序運行在分佈式系統上。
在分佈式計算過程中有以下角色:
主節點稱爲作業節點(jobtracker),
從節點稱爲任務節點(tasktracker)。
在任務節點中,運行第一階段的代碼稱爲map任務(map task),運行第二階段的代碼稱爲reduce任務(reduce task)。
task : 任務 , tracker ,跟蹤器
關於hadoop的名詞解釋
(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記錄着每個文件中各個塊所在的數據節點的位置信息
實戰:搭建Hadoop集羣:
實驗環境
安裝前,3臺虛擬機IP及機器名稱如下:
主機名 IP地址 角色
silence80 192.168.1.80 NameNode
silence84 192.168.1.84 DataNode1
silence81 192.168.1.81 DataNode2
實驗前期環境準備:
三臺機器上配置hosts文件,如下:
[root@silence80 ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.80 silence80
192.168.1.84 silence84
192.168.1.81 silence81
複製hosts到其它兩機器:
[root@silence80 ~]# scp /etc/hosts [email protected]:/etc/
[root@silence80 ~]# scp /etc/hosts [email protected]:/etc/
注意:在/etc/hosts中,不要把機器名字,同時對應到127.0.0.1這個地址,否則會導致數據節點連接不上namenode,報錯如下:
org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.1.10:9000
配置在silence80上,可以ssh無密碼登錄機器silence80,silence84,silence81 ,方便後期複製文件和啓動服務。因爲namenode啓動時,會連接到datanode上啓動對應的服務。
生成公鑰和私鑰
[root@silence80 ~]# 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@silence80
The key's randomart image is:
+--[ RSA 2048]----+
| . |
| o + |
| o + *|
| .=.=+|
| S E.++oo|
| . o .. +. |
| . + . |
| . . o |
| o. . |
+-----------------+
導入公鑰到其他datanode節點認證文件
[root@silence80 ~]# ssh-copy-id [email protected]
[root@silence80 ~]# ssh-copy-id [email protected]
配置Hadoop環境,安裝Java環境JDK:三臺機器上都要配置
silence80安裝jdk
上傳jdk軟件包到silence80
[root@silence80 ~]# rpm -ivh jdk-7u71-linux-x64.rpm
1、安裝及配置Java運行環境—jdk。升級了jdk的版本
[root@silence80 ~]# rpm -ivh jdk-7u71-linux-x64.rpm
[root@silence80 ~]#rpm -pql /root/jdk-7u71-linux-x64.rpm #通過查看jdk的信息可以知道jdk的安裝目錄在/usr/java
[root@silence80 ~]#vim /etc/profile #在文件的最後添加以下內容:
export JAVA_HOME=/usr/java/jdk1.7.0_71
export JAVA_BIN=/usr/java/jdk1.7.0_71/bin
export PATH=${JAVA_HOME}/bin:$PATH
export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
[root@silence80 ~]#source /etc/profile #使配置文件生效
驗證java運行環境是否安裝成功:
[root@silence80 ~]# 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)
如果出現安裝的對應版本,說明java運行環境已經安裝成功。
注:這裏只是升級了jdk的版本,因爲在我安裝的系統中已經安裝了jdk。
將jdk部署到其它兩臺機器上:
[root@silence80 ~]# scp jdk-7u71-linux-x64.rpm [email protected]:/root
[root@silence80 ~]# scp jdk-7u71-linux-x64.rpm [email protected]:/root
[root@silence80 ~]# scp /etc/profile 192.168.1.81:/etc/profile
[root@silence80 ~]# scp /etc/profile 192.168.1.84:/etc/profile
安裝:
[root@silence84 ~]# rpm -ivh jdk-7u71-linux-x64.rpm
[root@silence81 ~]# rpm -ivh jdk-7u71-linux-x64.rpm
重新參加java運行環境:
[root@silence84 ~]# source /etc/profile
[root@silence81 ~]# source /etc/profile
測試:
[root@silence84 ~]# 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@silence81 ~]# 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)
創建運行hadoop用戶賬號和Hadoop目錄。 儘量不用root帳號運行
silence80:
[root@silence80 ~]# useradd -u 8000 hadoop #爲了保障,在其它服務器上創建的hadoop用戶ID保持一致,創建時,儘量把UID調大
[root@silence80 ~]# echo 123456 | passwd --stdin hadoop
[root@silence84 ~]# useradd -u 8000 hadoop
[root@silence84 ~]# echo 123456 | passwd --stdin hadoop
[root@silence81 ~]# useradd -u 8000 hadoop
[root@silence81 ~]# echo 123456 | passwd --stdin hadoop
注:創建用戶hadoop時,不能使用參數-s /sbin/nologin ,因爲稍後我們要su - hadoop 切換用戶
在silence80安裝Hadoop 並配置成namenode主節點
Hadoop安裝目錄:/home/hadoop/hadoop-2.2.0
使用root帳號將hadoop-2.2.0.tar.gz 上傳到服務器
[hadoop@silence80 ~]$ tar zxvf hadoop-2.2.0.tar.gz
創建hadoop相關的工作目錄
[hadoop@silence80 ~]$ mkdir -p /home/hadoop/dfs/name /home/hadoop/dfs/data /home/hadoop/tmp
[hadoop@silence80 ~]$ ls
dfs hadoop-2.2.0 hadoop-2.2.0.tar.gz tmp
配置Hadoop:需要修改7個配置文件。
文件位置:/home/hadoop/hadoop-2.2.0/etc/hadoop/
文件名稱:hadoop-env.sh、yarn-evn.sh、slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml
1、配置文件hadoop-env.sh,指定hadoop的java運行環境
該文件是hadoop運行基本環境的配置,需要修改的爲java虛擬機的位置。
[hadoop@silence80 hadoop-2.2.0]$ vim /home/hadoop/hadoop-2.2.0/etc/hadoop/hadoop-env.sh
改:27 export JAVA_HOME=${JAVA_HOME}
爲:export JAVA_HOME=/usr/java/jdk1.7.0_71
注:指定java運行環境變量
2、配置文件yarn-env.sh,指定yarn框架的java運行環境
該文件是yarn框架運行環境的配置,同樣需要修改java虛擬機的位置。
yarn :Hadoop 的新 MapReduce 框架Yarn是Hadoop 自 0.23.0 版本後新的 map-reduce 框架(Yarn) 原理。
[hadoop@silence80 hadoop-2.2.0]$ vim /home/hadoop/hadoop-2.2.0/etc/hadoop/yarn-env.sh
改:26 JAVA_HOME=$JAVA_HOME
爲:26 JAVA_HOME=/usr/java/jdk1.7.0_71
3、配置文件slaves ,指定datanode 數據存儲服務器
將所有DataNode的機器名字寫入此文件中,每個主機名一行,配置如下:
[hadoop@silence80 hadoop-2.2.0]$ vim /home/hadoop/hadoop-2.2.0/etc/hadoop/slaves
改:localhost
爲:
silence84
silence81
4、配置文件core-site.xml,指定訪問hadoop web界面訪問路徑
這個是hadoop的核心配置文件,這裏需要配置的就這兩個屬性,fs.default.name配置了hadoop的HDFS系統的命名,位置爲主機的9000端口;
hadoop.tmp.dir配置了hadoop的tmp目錄的根位置。這裏使用了一個文件系統中沒有的位置,所以要先用mkdir命令新建一下。
[hadoop@silence80 hadoop-2.2.0]$ vim /home/hadoop/hadoop-2.2.0/etc/hadoop/core-site.xml
改:
19 <configuration>
20 </configuration>
注: 在<configuration>和</configuration>中間插入以一下紅色和藍色標記內容:
爲:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://silence80:9000</value> #指定了後期hdfs默認訪問的端口
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
</configuration>
注:property 財產
5、配置文件hdfs-site.xml
這個是hdfs的配置文件,dfs.http.address配置了hdfs的http的訪問位置;
dfs.replication配置了文件塊的副本數,一般不大於從機的個數。
[root@silence80 ~]# vim /home/hadoop/hadoop-2.2.0/etc/hadoop/hdfs-site.xml
改:19 <configuration>
20
21 </configuration>
注: 在<configuration>和</configuration>中間插入以一下紅色和藍色標記內容:
爲:
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>silence80:9001</value> # 通過web界面來查看HDFS狀態
</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> #每個Block有2個備份。
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
注:
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>silence80:9001</value> # 通過web界面來查看HDFS狀態
</property>
<property>
<name>dfs.replication</name>
<value>2</value> #每個Block有2個備份。
</property>
6、配置文件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歷史服務器
$ sbin/mr-jobhistory-daemon.sh start historyserver
這樣我們就可以在相應機器的19888端口上打開歷史服務器的WEB UI界面。可以查看已經運行完的作業情況。
生成mapred-site.xml
[hadoop@silence80 hadoop-2.2.0]$ cp /home/hadoop/hadoop-2.2.0/etc/hadoop/mapred-site.xml.template /home/hadoop/hadoop-2.2.0/etc/hadoop/mapred-site.xml
[hadoop@silence80 hadoop-2.2.0]$ vim /home/hadoop/hadoop-2.2.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>silence80:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>silence80:19888</value>
</property>
</configuration>
7、配置節點yarn-site.xml
該文件爲yarn框架的配置,主要是一些任務的啓動位置
[hadoop@silence80 hadoop-2.2.0]$ vim /home/hadoop/hadoop-2.2.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>silence80:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>silence80:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>silence80:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>silence80:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>silence80:8088</value>
</property>
</configuration>
複製到其他datanode節點: silence84和silence81
[hadoop@silence80 hadoop-2.2.0]$ scp -r /home/hadoop/hadoop-2.2.0 hadoop@silence81:~/
[hadoop@silence80 hadoop-2.2.0]$ scp -r /home/hadoop/hadoop-2.2.0 hadoop@silence84:~/
在silence80上啓動Hadoop
切換到hadoop用戶
(3)格式化
hadoop namenode的初始化,只需要第一次的時候初始化,之後就不需要了
[hadoop@silence80 hadoop-2.2.0]$ /home/hadoop/hadoop-2.2.0/bin/hdfs namenode -format
15/08/03 22:35:21 INFO common.Storage: Storage directory /home/hadoop/dfs/name has been successfully formatted.
。。。
15/08/03 22:35:21 INFO util.ExitUtil: Exiting with status 0
15/08/03 22:35:21 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at silence80/192.168.1.80
************************************************************/
[root@silence80 hadoop-2.2.0]# echo $?
0
查看格式化後,生成的文件:
[root@silence80 hadoop]# rpm -ivh /mnt/Packages/tree-1.5.3-2.el6.x86_64.rpm
[hadoop@silence80 ~]$ tree /home/hadoop/dfs/
/home/hadoop/dfs/
├── data
└── name
└── current
├── fsimage_0000000000000000000
├── fsimage_0000000000000000000.md5
├── seen_txid
└── VERSION
生成基於hadoop用戶的不輸入密碼登錄:因爲後期使用hadoop用戶啓動datanode節點使用需要直接登錄到對應的服務器上啓動datanode相關服務。
[hadoop@silence80 hadoop-2.2.0]$ ssh-keygen
[hadoop@silence80 hadoop-2.2.0]$ ssh-copy-id 192.168.1.84
[hadoop@silence80 hadoop-2.2.0]$ ssh-copy-id 192.168.1.81
[hadoop@silence80 hadoop-2.2.0]$ ssh-copy-id 192.168.1.80
(4)啓動hdfs: ./sbin/start-dfs.sh,即啓動HDFS分佈式存儲
[root@silence80 hadoop-2.2.0]# /home/hadoop/hadoop-2.2.0/sbin/start-dfs.sh
Starting namenodes on [silence80]
silence80: starting namenode, logging to /home/hadoop/hadoop-2.2.0/logs/hadoop-root-namenode-silence80.out
silence84: starting datanode, logging to /home/hadoop/hadoop-2.2.0/logs/hadoop-root-datanode-silence84.out
silence81: starting datanode, logging to /home/hadoop/hadoop-2.2.0/logs/hadoop-root-datanode-silence81.out
Starting secondary namenodes [silence80]
silence80: starting secondarynamenode, logging to /home/hadoop/hadoop-2.2.0/logs/hadoop-root-secondarynamenode-silence80.out
注:如果報錯,如:
silence84: Host key verification failed.
解決:
[hadoop@silence80 ~]$ ssh 192.168.1.84 #確認可以不輸入密碼直接連接上silence84
關閉後再重啓:
[root@silence80 hadoop-2.2.0]# /home/hadoop/hadoop-2.2.0/sbin/stop-dfs.sh
[root@silence80 hadoop-2.2.0]# /home/hadoop/hadoop-2.2.0/sbin/start-dfs.sh
(5)查看進程,此時master有進程:namenode和 secondarynamenode進程:
[root@silence80 ~]# 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.7.0_71/bin/java -Dproc_namenode -Xmx1000m
。。。
-Dhadoop.log.dir=/home/hadoop/hadoop-2.2.0/logs -Dhadoop.log.file=hadoop-root-secondarynamenode-silence80.log
silence84和silence81上有進程:DataNode
[root@silence84 ~]# 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.7.0_71/bin/java -Dproc_datanode -Xmx1000m
。。。
(6)在silence80上啓動yarn: ./sbin/start-yarn.sh 即,啓動分佈式計算
[root@silence80 hadoop-2.2.0]# /home/hadoop/hadoop-2.2.0/sbin/start-yarn.sh
starting yarn daemons
starting resourcemanager, logging to /home/hadoop/hadoop-2.2.0/logs/yarn-root-resourcemanager-silence80.out
silence81: starting nodemanager, logging to /home/hadoop/hadoop-2.2.0/logs/yarn-root-nodemanager-silence81.out
silence84: starting nodemanager, logging to /home/hadoop/hadoop-2.2.0/logs/yarn-root-nodemanager-silence84.out
(7)查看進程:
查看silence80上的ResourceManager進程,silence81和silence84上的進程:DataNode NodeManager
[root@silence80 ~]# 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.7.0_71/bin/java -Dproc_resourcemanager -Xmx1000m
[root@silence81 ~]# 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.7.0_71/bin/java -Dproc_nodemanager -Xmx1000m -Dhadoop.log.dir=/home/hadoop/hadoop-2.2.0/logs
[root@silence84 ~]# 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.7.0_71/bin/java -Dproc_nodemanager -Xmx1000m
注:start-dfs.sh 和 start-yarn.sh 這兩個腳本可用start-all.sh代替。
[hadoop@silence80 ~]$ /home/hadoop/hadoop-2.2.0/sbin/start-all.sh
關閉:
[hadoop@silence80 ~]$ /home/hadoop/hadoop-2.2.0/sbin/stop-all.sh
啓動: jobhistory服務,查看mapreduce運行狀態
[root@silence80 hadoop-2.2.0]# /home/hadoop/hadoop-2.2.0/sbin/mr-jobhistory-daemon.sh start historyserver
starting historyserver, logging to /home/hadoop/hadoop-2.2.0/logs/mapred-root-historyserver-silence80.out
(8)查看HDFS分佈式文件系統狀態:
[hadoop@silence80 hadoop-2.2.0]$ /home/hadoop/hadoop-2.2.0/bin/hdfs dfsadmin -report
。。。
-------------------------------------------------
Datanodes available: 1 (1 total, 0 dead)
Live datanodes:
Name: 192.168.1.81:50010 (silence81)
Hostname: silence81
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.84:50010 (silence84)
Hostname: silence84
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@silence80 ~]$ /home/hadoop/hadoop-2.2.0/bin/hdfs fsck / -files -blocks
(10)Web查看HDFS: http://192.168.1.80:50070