生產環境Hadoop大叢集完全分散式模式安裝 NFS+DNS+awk
這是利用Vmware9.0在一臺伺服器上搭建的分散式環境,作業系統CentOS 6.4 X64中配置Hadoop-1.0.4時的總結文件。 Hadoop配置建議所有配置檔案中使用主機名進行配置,並且機器上應在防火牆中開啟相應埠,並設定SSHD服務為開機啟動,此外java環境變數可以在/etc/profile中配置。
0 安裝程式
軟體 |
版本 |
地址 |
VMware-workstation-full-9.0.0-812388 |
9.0.0-812388 |
|
Centos |
6.4 X64 |
http://mirrors.163.com/centos/6.4/isos/x86_64/CentOS-6.4-x86_64-bin-DVD1.iso |
jdk |
jdk-6u45-linux-x64 |
http://www.oracle.com/technetwork/java/javase/downloads/jdk6downloads-1902814.html |
hadoop |
1.0.4 |
http://apache.fayea.com/apache-mirror/hadoop/common/stable/hadoop-1.0.4.tar.gz
|
主機名 |
IP |
備註 |
|
NFSServer |
10.88.106.219 |
獨立伺服器,提供NFS服務 |
|
DNSServer |
10.88.106.220 |
獨立伺服器,提供DNS服務 |
|
NameNode |
10.88.106.221 |
NameNode |
|
DataNode1 |
10.88.106.222 |
DataNode |
|
DataNode2 |
10.88.106.223 |
DataNode |
|
DataNode3 |
10.88.106.224 |
DataNode |
|
DataNode4 |
10.88.106.225 |
DataNode |
叢集包含七個節點:1個NFSServer,1個DNSServer,1個namenode,4個datanode,節點之間區域網連線,可以相互ping通。
1.2 快速部署節點所有節點均是Centos 6.4 64位系統,防火牆均禁用,sshd服務均開啟並設定為開機啟動。
a) 首先在VMware中安裝好一臺Centos 6.4,建立hadoop使用者。假設虛擬機器的名字為NameNode
b) 關閉虛擬機器,把NameNode資料夾,拷貝6份,並命名為DataNode1,..,DataNode4,NFSServer,DNSServer
c) 用VMware開啟每個DateNode,設定其虛擬機器的名字
d) 開啟作業系統,當彈出對話方塊時,選擇“I copy it”
e) 開啟每個虛擬機器,檢視ip地址
ifconfig
f) 每個虛擬機器,永久關閉防火牆(非常重要,一定要確認),並關閉SELINUX
chkconfig iptables off (永久生效)
service iptables stop (臨時有效)
vim /etc/selinux/config
[root@DataNode1 local]# chkconfigiptables off
[root@DataNode1 local]# serviceiptables stop
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policyACCEPT: filter [ OK ]
iptables: Unloading modules: [ OK ]
[root@DataNode1 local]#
g) 配置NameNode
第一步,檢查機器名
#hostname
如發現不對,則修改,root使用者登陸,修改命令如下
# vim /etc/sysconfig/network
|
依次對每個節點進行處理,修改完之後,重啟系統 #reboot
h) 規劃系統目錄
安裝目錄和資料目錄分開,且資料目錄和hadoop的使用者目錄分開,如果需要重新格式化,則可以直接刪除所有的資料目錄,然後重建資料目錄。
如果資料目錄和安裝目錄或者使用者目錄放置在一起,則對資料目錄操作時,存在誤刪除程式或者使用者檔案的風險。
完整路徑 |
說明 |
/usr/local |
hadoop的程式安裝主目錄 |
/home/hadoop_space/tmp |
臨時目錄 |
/home/hadoop_space/hdfs/name |
namenode上儲存hdfs名字空間後設資料 |
/home/hadoop_space/hdfs/data |
datanode上資料塊的物理儲存位置 |
/home/hadoop_space/mapred/local |
tasktracker上執行mapreduce程式時的本地目錄 |
/home/hadoop_space/mapred/system |
這個是hdfs中的目錄,儲存執行mr程式時的共享檔案 |
至於這裡為什麼在/usr/local下建立安裝目錄,解釋如下
/usr 檔案系統
/usr檔案系統經常很大,因為所有程式安裝在這裡. /usr 裡的所有檔案一般來自Linux distribution;本地安裝的程式和其他東西在/usr/local 下.這樣可能在升級新版系統或新distribution時無須重新安裝全部程式.
/usr/local 本地安裝的軟體和其他檔案放在這裡.
小貼士:建立目錄:mkdir(makedirectories)
功能說明:建立目錄
語 法:mkdir [-p][--help][--version][-m ][目錄名稱]
補充說明:mkdir可建立目錄並同時設定目錄的許可權。
參 數:
-m或–mode 建立目錄時同時設定目錄的許可權。
-p或–parents 若所要建立目錄的上層目錄目前尚未建立,則會一併建立上層目錄。
例:mkdir test
開始建立目錄:
在NameNode下,root使用者
mkdir-p /home/hadoop_space/tmp
mkdir-p /home/hadoop_space/hdfs/name
mkdir-p /home/hadoop_space/hdfs/data
mkdir-p /home/hadoop_space/mapred/local
mkdir-p /home/hadoop_space/mapred/system
chown-R hadoop:hadoop /home/hadoop_space/
修改目錄/home/hadoop的擁有者(因為該目錄用於安裝hadoop,使用者對其必須有rwx許可權。)
chown -R hadoop:hadoop /home/hadoop
chown -R hadoop:hadoop /home/hadoop_space
1.3 安裝jdk1.3.1.下載JDK選定linux環境版本,下載到的檔案是:jdk-6u45-linux-x64.bin
1.3.2.複製JDK安裝包到系統指定資料夾把下載的安裝檔案(jdk-6u45-linux-x64.bin)拷到linux路徑/usr/local/下。
1.3.3.給安裝檔案賦予許可權a).進入目錄,命令:cd /usr/local/java
b).賦予許可權,命令:chmod +x jdk-6u45-linux-x64.bin
(如果因許可權問題執行失敗,則加上su, 即su chmod u+x jdk-6u45-linux-x64.bin)
1.3.4安裝JDK開始安裝,在控制檯執行命令: ./ jdk-6u45-linux-x64.bin
(如果因許可權問題執行失敗,則加上su , 即sud./jdk-6u45-linux-x64.bin)
檔案會被安裝到當前目錄 /usr/local/jdk1.6.0_45
刪除安裝檔案rm jdk-6u45-linux-x64.bin
安裝完成後,修改/usr/local/jdk1.6.0_45目錄擁有著為hadoop使用者,
chown-R hadoop:hadoop /usr/local/jdk1.6.0_45
1.3.5 Java環境變數配置root使用者登陸,命令列中執行命令”vim /etc/profile”,並加入以下內容,配置環境變數(注意/etc/profile這個檔案很重要,後面Hadoop的配置還會用到)。
#java
JAVA_HOME=/usr/local/jdk1.6.0_45
JRE_HOME=/usr/local/jdk1.6.0_45/jre
PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/bin/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME CLASSPATH PATH
儲存並退出,執行以下命令使配置生效
chmod +x /etc/profile
source /etc/profile
配置完畢,在命令列中使用命令“java -version”可以判斷是否成功。在hadoop使用者下測試java -version,一樣成功。
[root@NameNodehadoop]# java -version
javaversion "1.6.0_45"
Java(TM)SE Runtime Environment (build 1.6.0_45-b06)
JavaHotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)
2. 配置DNS解析主機名說明:在生產的hadoop叢集環境中,由於伺服器可能會有許多臺,通過配置DNS對映機器名,相比配置/etc/host方法,可以避免在每個節點都配置各自的host檔案,而且在新增節點時也不需要修改每個節點的/etc/host的主機名-IP對映檔案。減少了配置步驟和時間,便於管理。
詳細步驟見:【 hadoop大規模應用之CentOS6.4+DNS-BIND域名伺服器配置基礎詳解】
http://blog.csdn.net/liema2000/article/details/9076333
3.建立hadoop執行賬號在所有的節點建立hadoop執行賬號
[root@gc ~]#groupadd hadoop
[root@gc ~]#useradd -g hadoop hadoop
說明:在大的hadoop叢集安裝環境中,這步可以在批量安裝linux系統之前完成,然後再進行系統的複製。
4.通過NFS配置ssh免密碼連入說明:通過NFS配置ssh免密碼連入時,當我們有新的節點接入時,不再需要分別向其它節點各自新增自己公鑰資訊,只需要把公鑰資訊追加到共享的authorized_keys公鑰當中,其它節點就直接指向最新的公鑰檔案。便於分配公鑰和管理。
詳細步驟見: 【hadoop大規模應用之NFS安裝及SSH免密碼驗證配置】
http://blog.csdn.net/liema2000/article/details/9076357
--可先一某節點(如NameNode)解壓配置檔案
[root@NameNode hadoop]# pwd
/usr/local/hadoop
[root@NameNode hadoop]#
[root@NameNode hadoop]# tar -zxvf hadoop-1.0.4.tar.gz
(1)配置Hadoop的配置檔案
(a)配置hadoop-env.sh
$ vim /usr/local/hadoop-1.0.4/conf/hadoop-env.sh
# set java environment
export JAVA_HOME=/usr/local/jdk1.6.0_45
export HADOOP_HOME_WARN_SUPPRESS=1
export HADOOP_CLASSPATH=/usr/local/hadoop-1.0.4:/usr/local/hadoop-1.0.4/lib
(b)配置/etc/profile
#hadoop
export HADOOP_HOME=/usr/hadoop-1.0.4
export HADOOP_HOME_WARN_SUPPRESS=1
PATH=$HADOOP_HOME/bin:$PATH
export PATH
修改完,重啟/etc/profile
[root@NameNode ~]# source /etc/profile
(c)配置conf/hadoop-site.xml
Hadoop-0.20.2之後的版本請分別配置core-site.xml,hdfs-site.xml和mapred-site.xml三個配置檔案。
配置檔名(xml) |
欄位名 |
欄位值 |
說明 |
core-site |
fs.default.name |
hdfs://NameNode:9000 |
|
hadoop.tmp.dir |
/home/hadoop_space/tmp |
臨時目錄 | |
hdfs-site |
dfs.name.dir |
/home/hadoop_space/hdfs/name |
namenode上儲存hdfs名字空間後設資料 |
dfs.data.dir |
/home/hadoop_space/hdfs/data |
datanode上資料塊的物理儲存位置 | |
dfs.replication |
3 |
副本個數,不配置預設是3,應小於datanode機器數量 | |
mapred-site |
mapred.job.tracker |
NameNode:9001 |
jobtracker標識:埠號,不是URI |
mapred.local.dir |
/home/hadoop_space/mapred/local |
tasktracker上執行mapreduce程式時的本地目錄 | |
mapred.system.dir |
/home/hadoop_space/mapred/system |
這個是hdfs中的目錄,儲存執行mr程式時的共享檔案 |
編輯core-site.xml
編輯hdfs-site.xml
<!-- Put site-specific propertyoverrides in this file. -->
編輯mapred-site.xml
<!-- Put site-specific propertyoverrides in this file. -->
(d)配置masters檔案,把localhost修改為namenode的主機名
NameNode.hdcw.org |
(e)配置slaves檔案, 刪除localhost,加入所有datanode的主機名
DataNode1.hdcw.org DataNode2.hdcw.org DataNode3.hdcw.org DataNode4.hdcw.org |
Namenode節點上root執行執行
chown-R hadoop:hadoop /usr/local
chown-R hadoop:hadoop /home/hadoop_space/
--把NameNode主機上面hadoop配置好的檔案分別copy到各節點
--原來copy的方法是一個個命令執行,如下
[hadoop@NameNodehadoop]$ scp -rp hadoop-1.0.4 hadoop@DataNode1:/usr/local/
[hadoop@NameNodehadoop]$ scp -rp hadoop-1.0.4 hadoop@DataNode2:/usr/local/
--但站在hadoop大叢集的角度,上面方法會很費時,我們可用awk命令生成批量執行的指令碼,批量執行,省時省力,如下:
[root@NameNode local]# cat$HADOOP_HOME/conf/slaves| awk '{print "scp -rp hadoop-1.0.4hadoop@"$1":/usr/local/"}' > scp.sh
[root@NameNode local]# cat scp.sh
scp -rp hadoop-1.0.4hadoop@DataNode1.hdcw.org:/usr/local/
scp -rp hadoop-1.0.4hadoop@DataNode2.hdcw.org:/usr/local/
scp -rp hadoop-1.0.4hadoop@DataNode3.hdcw.org:/usr/local/
scp -rp hadoop-1.0.4hadoop@DataNode4.hdcw.org:/usr/local/
切換到hadoop使用者,執行復制
複製java
[root@NameNode local]# cat$HADOOP_HOME/conf/slaves| awk '{print "scp -rp /usr/local/jdk1.6.0_45hadoop@"$1":/usr/local/"}' > scp_java.sh
複製hadoop_space
[root@NameNode local]# cat$HADOOP_HOME/conf/slaves| awk '{print "scp -rp /home/hadoop_spacehadoop@"$1":/home/"}' > scp_hadoop.sh
#複製/etc/profile
[root@NameNodelocal]# cat $HADOOP_HOME/conf/slaves|awk '{print "scp -rp /etc/profile root@"$1":/etc/"}' >scp_profile.sh
root使用者執行
8. 格式化namenode--在namenode節點進行格式化
[hadoop@NameNode local]$cd $HADOOP_HOME
[hadoop@NameNodehadoop-1.0.4]$ bin/hadoop namenode -format
13/06/11 20:28:16 INFOnamenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: StartingNameNode
STARTUP_MSG: host = java.net.UnknownHostException:NameNode: NameNode
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 1.0.4
STARTUP_MSG: build =https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.0 -r 1393290;compiled by 'hortonfo' on Wed Oct 305:13:58 UTC 2012
************************************************************/
Re-format filesystem in/home/hadoop_space/hdfs/name ? (Y or N) Y
13/06/11 20:28:18 INFOutil.GSet: VM type = 64-bit
13/06/11 20:28:18 INFOutil.GSet: 2% max memory = 19.33375 MB
13/06/11 20:28:18 INFOutil.GSet: capacity = 2^21 = 2097152entries
13/06/11 20:28:18 INFOutil.GSet: recommended=2097152, actual=2097152
13/06/11 20:28:19 INFOnamenode.FSNamesystem: fsOwner=hadoop
13/06/11 20:28:19 INFOnamenode.FSNamesystem: supergroup=supergroup
13/06/11 20:28:19 INFOnamenode.FSNamesystem: isPermissionEnabled=true
13/06/11 20:28:19 INFOnamenode.FSNamesystem: dfs.block.invalidate.limit=100
13/06/11 20:28:19 INFOnamenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0min(s), accessTokenLifetime=0 min(s)
13/06/11 20:28:19 INFOnamenode.NameNode: Caching file names occuring more than 10 times
13/06/11 20:28:29 INFOcommon.Storage: Image file of size 112 saved in 0 seconds.
13/06/11 20:28:29 INFOcommon.Storage: Storage directory /home/hadoop_space/hdfs/name has beensuccessfully formatted.
13/06/11 20:28:29 INFOnamenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shuttingdown NameNode at java.net.UnknownHostException: NameNode: NameNode
************************************************************/
[hadoop@NameNodehadoop-1.0.4]$
9. 啟動hadoop
--在NameNode節點啟動hadoop守護程式
[hadoop@NameNodehadoop-1.0.4]$ bin/start-all.sh
starting namenode, loggingto /usr/local/hadoop-1.0.4/libexec/../logs/hadoop-hadoop-namenode-NameNode.out
DataNode1.hdcw.org:starting datanode, logging to /usr/local/hadoop-1.0.4/libexec/../logs/hadoop-hadoop-datanode-DataNode1.out
DataNode4.hdcw.org:starting datanode, logging to/usr/local/hadoop-1.0.4/libexec/../logs/hadoop-hadoop-datanode-DataNode4.out
DataNode2.hdcw.org:starting datanode, logging to /usr/local/hadoop-1.0.4/libexec/../logs/hadoop-hadoop-datanode-DataNode2.out
DataNode3.hdcw.org:starting datanode, logging to/usr/local/hadoop-1.0.4/libexec/../logs/hadoop-hadoop-datanode-DataNode3.out
NameNode.hdcw.org:starting secondarynamenode, logging to /usr/local/hadoop-1.0.4/libexec/../logs/hadoop-hadoop-secondarynamenode-NameNode.out
starting jobtracker,logging to/usr/local/hadoop-1.0.4/libexec/../logs/hadoop-hadoop-jobtracker-NameNode.out
DataNode2.hdcw.org:starting tasktracker, logging to /usr/local/hadoop-1.0.4/libexec/../logs/hadoop-hadoop-tasktracker-DataNode2.out
DataNode4.hdcw.org:starting tasktracker, logging to/usr/local/hadoop-1.0.4/libexec/../logs/hadoop-hadoop-tasktracker-DataNode4.out
DataNode1.hdcw.org:starting tasktracker, logging to /usr/local/hadoop-1.0.4/libexec/../logs/hadoop-hadoop-tasktracker-DataNode1.out
DataNode3.hdcw.org:starting tasktracker, logging to/usr/local/hadoop-1.0.4/libexec/../logs/hadoop-hadoop-tasktracker-DataNode3.out
[hadoop@NameNodehadoop-1.0.4]$
10. 用jps檢驗各後臺程式是否成功啟動
--在NameNode節點檢視後臺程式
[hadoop@NameNodehadoop-1.0.4]$ jps
28219 JobTracker
27989 NameNode
28141SecondaryNameNode
28376 Jps
[hadoop@NameNodehadoop-1.0.4]$
--在datanode節點檢視後臺程式
[hadoop@DataNode1 home]$ jps
56556 DataNode
56681 Jps
56635 TaskTracker
[hadoop@DataNode1 home]$
[grid@hotel03~]$ /usr/java/jdk1.6.0_18/bin/jps
29936TaskTracker
29828 DataNode
30924 Jps
11. 通過web瞭解Hadoop的活動
通過用瀏覽器和http訪問jobtracker所在節點的50030埠監控jobtracker
Jobtracker監控
http://10.88.106.221:50030/jobtracker.jsp
通過用瀏覽器和http訪問namenode所在節點的50070埠監控叢集
http://10.88.106.221:50070/dfshealth.jsp
常見問題
1、許可權問題
[hadoop @NameNode local]# scp -rhadoop-1.0.4 hadoop@DataNode1.hdcw.org:/usr/local
scp: /usr/local/hadoop-1.0.4: Permissiondenied
[hadoop @NameNode local]
原因:/usr/local資料夾的屬主是root,hadoop沒有許可權操作
解決方法1:規劃時,把hadoop的目錄放到/home/hadoop/下面
解決方法2:更改/usr/local/的屬主為hadoop
現在採用的是方法2
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/42046/viewspace-763798/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Hadoop框架:叢集模式下分散式環境搭建Hadoop框架模式分散式
- Hadoop叢集完全分散式模式環境部署Hadoop分散式模式
- 完全分散式Hadoop叢集的安裝部署步驟分散式Hadoop
- Hadoop 2.6 叢集搭建從零開始之4 Hadoop的安裝與配置(完全分散式環境)Hadoop分散式
- Hadoop完全分散式叢集配置Hadoop分散式
- 完全分散式模式hadoop叢集安裝與配置分散式模式Hadoop
- [Hadoop踩坑]叢集分散式環境配置Hadoop分散式
- hadoop完全分散式環境搭建Hadoop分散式
- 虛擬機器裝Hadoop叢集完全分散式虛擬機Hadoop分散式
- hadoop 2.8.5完全分散式環境搭建Hadoop分散式
- Hadoop完全分散式模式的安裝和配置Hadoop分散式模式
- 分散式Hadoop1.2.1叢集的安裝分散式Hadoop
- 《生產環境下Hadoop大叢集安裝與配置+DNS+NFS》HadoopDNSNFS
- [hadoop]hadoop2.6完全分散式環境搭建Hadoop分散式
- Hadoop 2.6 叢集搭建從零開始之3 Hadoop的安裝與配置(偽分散式環境)Hadoop分散式
- hadoop學習之hadoop完全分散式叢集安裝Hadoop分散式
- hadoop2.4.1完全分散式安裝Hadoop分散式
- Hadoop3.0完全分散式叢集安裝部署Hadoop分散式
- 【原創】生產環境下Hadoop大叢集安裝與配置+DNS+NFSHadoopDNSNFS
- 分散式系統與叢集環境分散式
- zabbix分散式監控環境完全編譯安裝部署分散式編譯
- Hadoop yarn完全分散式安裝筆記HadoopYarn分散式筆記
- hadoop叢集環境搭建Hadoop
- Redis叢集環境安裝指南Redis
- hadoop偽分散式叢集的安裝(不是單機版)Hadoop分散式
- hadoop分散式叢集搭建Hadoop分散式
- Elasticsearch叢集搭建教程及生產環境配置Elasticsearch
- 生產環境的redis高可用叢集搭建Redis
- HADOOP SPARK 叢集環境搭建HadoopSpark
- Hadoop分散式叢集搭建_1Hadoop分散式
- Cassandra安裝及分散式叢集搭建分散式
- 生產環境的 ElasticSearch 安裝指南Elasticsearch
- HBase篇--搭建HBase完全分散式叢集分散式
- Hadoop分散式環境搭建總結(非生產:Rat hat linux 6.4 + hadoop_1.2.1)Hadoop分散式Linux
- 分散式 PostgreSQL 叢集(Citus)官方安裝指南分散式SQL
- 【Hadoop】 分散式Hadoop叢集安裝配置Hadoop分散式
- CentOS6 hadoop2.4完全分散式安裝文件CentOSHadoop分散式
- Hadoop叢集環境啟動順序Hadoop