服務(wù)近2000家企業(yè),依托一系列實(shí)踐中打磨過的技術(shù)和產(chǎn)品,根據(jù)企業(yè)的具體業(yè)務(wù)問題和需求,針對性的提供各行業(yè)大數(shù)據(jù)解決方案。
Hadoop之完全分布式環(huán)境搭建
來源:未知 時(shí)間:2021-38-16 瀏覽次數(shù):227次
Hadoop之完全分布式環(huán)境搭建,搭建hbase,MapReduce,zookeeper大數(shù)據(jù)集群
硬件環(huán)境:CentOS 6.5 服務(wù)器4臺(一臺為Master節(jié)點(diǎn),三臺為Slave節(jié)點(diǎn))
硬件環(huán)境:CentOS 6.5 服務(wù)器4臺(一臺為Master節(jié)點(diǎn),三臺為Slave節(jié)點(diǎn))
軟件環(huán)境:Java 1.7.0_45、hadoop-1.2.1
1、 集群拓?fù)鋱D
我們使用4臺機(jī)器來搭建Hadoop完全分布式環(huán)境,4臺機(jī)器的拓?fù)鋱D如下圖所示:

Hadoop集群中每個(gè)節(jié)點(diǎn)的角色如下表所示:

2、 配置SSH
- 環(huán)境準(zhǔn)備
下面以配置K-Master啟動(dòng)SSH服務(wù)為例進(jìn)行演示,用戶需參照下面步驟完成KVMSlave1~KVMSlave3三臺子節(jié)點(diǎn)機(jī)器的SSH服務(wù)啟動(dòng);
1)以hadoop用戶遠(yuǎn)程登錄K-Master服務(wù)器,啟動(dòng)SSH服務(wù);
[hadoop@K-Master hadoop]$ sudo /etc/init.d/sshd start
2)設(shè)置開機(jī)啟動(dòng):
[hadoop@K-Master hadoop]$ sudo chkconfig sshd on
- 配置K-Master本機(jī)無密碼登錄
下面以配置K-Master本機(jī)無密碼登錄為例進(jìn)行講解,用戶需參照下面步驟完成KVMSlave1~KVMSlave3三臺子節(jié)點(diǎn)機(jī)器的本機(jī)無密碼登錄;
1)以hadoop用戶遠(yuǎn)程登錄K-Master服務(wù)器,在K-Master服務(wù)器上生成公鑰和私鑰密碼對,密鑰默認(rèn)存儲在”/home/hadoop/.ssh”目錄下,生成公鑰和私鑰密碼對時(shí),無需輸入密碼,直接回車即可。
#切換到hadoop用戶,不能使用root用戶生成密鑰 [hadoop@K-Master hadoop]$ su hadoop [hadoop@K-Master hadoop]$ cd /home/hadoop/ [hadoop@K-Master hadoop]$ ssh-keygen -t rsa -P ""
2)將公鑰追加到”authorized_keys”文件
[hadoop@K-Master hadoop]$ cd /home/hadoop/ [hadoop@K-Master hadoop]$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys
3)賦予權(quán)限
[hadoop@K-Master hadoop]$ chmod 600 .ssh/authorized_keys
4)驗(yàn)證本機(jī)能無密碼訪問
[hadoop@K-Master hadoop]$ ssh K-Master
- 配置K-Master本機(jī)無密碼登錄KVMSlave1~KVMSlave3
下面以K-Master無密碼登錄KVMSlave1為例進(jìn)行講解,用戶需參照下面步驟完成K-Master無密碼登錄KVMSlave2~KVMSlave3。
1)以hadoop用戶遠(yuǎn)程登錄KVMSlave1服務(wù)器,復(fù)制K-Master服務(wù)器的公鑰”id_rsa.pub”到KVMSlave1服務(wù)器的”/home/hadoop/”目錄下。
[hadoop@KVMSlave1 hadoop]$ cd /home/hadoop/ [hadoop@KVMSlave1 hadoop]$ scp hadoop@K-Master:/home/hadoop/.ssh/id_rsa.pub /home/hadoop/
2)將K-Master的公鑰(/home/hadoop/id_rsa.pub)追加到KVMSlave1的authorized_keys中。
[hadoop@KVMSlave1 hadoop]$ cd /home/hadoop [hadoop@KVMSlave1 hadoop]$ cat id_rsa.pub >> .ssh/authorized_keys [hadoop@KVMSlave1 hadoop]$ rm -r /home/hadoop/id_rsa.pub
3)另外開啟一個(gè)終端,遠(yuǎn)程登錄K-Master服務(wù)器,在K-Master服務(wù)器測試通過SSH無密碼登錄KVMSlave1。
[hadoop@K-Master hadoop]$ ssh KVMSlave1
- 配置KVMSlave1~KVMSlave3本機(jī)無密碼登錄K-Master
下面以KVMSlave1無密碼登錄K-Master為例進(jìn)行講解,用戶需參照下面步驟完成KVMSlave2~KVMSlave3無密碼登錄K-Master。
1)以hadoop用戶遠(yuǎn)程登錄K-Master,復(fù)制KVMSlave1服務(wù)器的公鑰”id_rsa.pub”到KVMSlave1服務(wù)器的”/home/hadoop/”目錄下。
[hadoop@K-Master hadoop]$ scp hadoop@KVMSlave1:/home/hadoop/.ssh/id_rsa.pub /home/hadoop
2)將KVMSlave1的公鑰(/home/hadoop/id_rsa.pub)追加到K-Master的authorized_keys中。
[hadoop@K-Master hadoop]$ cd /home/hadoop [hadoop@K-Master hadoop]$ cat id_rsa.pub >> .ssh/authorized_keys [hadoop@K-Master hadoop]$ rm –r /home/hadoop/id_rsa.pub
3)以hadoop用戶遠(yuǎn)程登錄KVMSlave1服務(wù)器,在KVMSlave1服務(wù)器測試通過SSH無密碼登錄K-Master。
[hadoop@KVMSlave1 hadoop]$ ssh K-Master
3、 安裝Hadoop
如果用戶已經(jīng)完成了Hadoop偽分布式環(huán)境搭建,建議刪除/usr/hadoop/安裝環(huán)境,從零開始配置Hadoop完全分布式環(huán)境。
1)以hadoop用戶遠(yuǎn)程登錄K-Master服務(wù)器,下載hadoop-1.2.1.tar.gz ,并將其拷貝到K-Master服務(wù)器的/home/hadoop/目錄下。
2)解壓Hadoop源文件
[hadoop@K-Master ~]$ su hadoop [hadoop@K-Master ~]$ cd /usr [hadoop@K-Master usr]$ sudo tar -zxvf /home/hadoop/hadoop-1.2.1.tar.gz //將文件減壓在當(dāng)前路徑
3)重命名hadoop
[hadoop@K-Master usr]$ sudo mv hadoop-1.2.1/ hadoop/
4) 設(shè)置hadoop文件夾的用戶屬組和用戶組
很關(guān)鍵到一步,便于hadoop用戶對該文件夾的文件擁有讀寫權(quán)限,不然后續(xù)hadoop啟動(dòng)后,無法在該文件夾創(chuàng)建文件和寫入日志信息。
[hadoop@K-Master usr]$ sudo chown -R hadoop:hadoop /usr/hadoop
5)刪除安裝包
[hadoop@K-Master ~]$ rm -rf /home/hadoop/hadoop-1.2.1.tar.gz #刪除"hadoop-1.2.1.tar.gz"安裝包
4、 配置K-Master的hadoop環(huán)境
1)配置環(huán)境變量
[hadoop@K-Master ~]$ sudo vi /etc/profile #HADOOP export HADOOP_HOME=/usr/hadoop export PATH=$PATH:$HADOOP_HOME/bin export HADOOP_HOME_WARN_SUPPRESS=1
使得hadoop命令在當(dāng)前終端立即生效;
[hadoop@K-Master ~] $source /etc/profile
2)配置hadoop-env.sh
hadoop環(huán)境是基于JVM虛擬機(jī)環(huán)境的,故需在hadoop-env.sh配置文件中指定JDK環(huán)境。修改/usr/hadoop/conf/hadoop-env.sh文件,添加如下JDK配置信息。
[hadoop@K-Master ~] cd /usr/hadoop/ [hadoop@K-Master hadoop] vi conf/hadoop-env.sh export JAVA_HOME=/usr/java/jdk1.7.0_65
3)配置core-site.xml
修改Hadoop核心配置文件/usr/hadoop/conf/core-site.xml,通過fs.default.name指定 NameNode 的 IP 地址和端口號,通過hadoop.tmp.dir指定hadoop數(shù)據(jù)存儲的臨時(shí)文件夾。
[hadoop@K-Master hadoop] vi conf/core-site.xml <configuration> <property> <name>fs.default.name</name> <value>hdfs://K-Master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/usr/hadoop/tmp</value> </property> </configuration>
特別注意:如沒有配置hadoop.tmp.dir參數(shù),此時(shí)系統(tǒng)默認(rèn)的臨時(shí)目錄為:/tmp/hadoo-hadoop。而這個(gè)目錄在每次重啟后都會被刪除,必須重新執(zhí)行format才行,否則會出錯(cuò)。
4)配置hdfs-site.xml
修改HDFS核心配置文件/usr/hadoop/conf/hdfs-site.xml,通過dfs.replication指定HDFS的備份因子為3,通過dfs.name.dir指定namenode節(jié)點(diǎn)的文件存儲目錄,通過dfs.data.dir指定datanode節(jié)點(diǎn)的文件存儲目錄。
[hadoop@K-Master hadoop] vi conf/hdfs-site.xml <configuration> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.name.dir</name> <value>/usr/hadoop/hdfs/name</value> </property> <property> <name>dfs.data.dir</name> <value>/usr/hadoop/hdfs/data</value> </property> </configuration>
5)配置mapred-site.xml
修改MapReduce核心配置文件/usr/hadoop/conf/mapred-site.xml,通過mapred.job.tracker屬性指定JobTracker的地址和端口。
[hadoop@K-Master hadoop] vi conf/mapred-site.xml <configuration> <property> <name>mapred.job.tracker</name> <value>http://K-Master:9001</value> </property> </configuration>
6)配置masters文件
修改/user/hadoop/conf/masters文件,該文件指定namenode節(jié)點(diǎn)所在的服務(wù)器機(jī)器。刪除localhost,添加namenode節(jié)點(diǎn)的主機(jī)名K-Master;不建議使用IP地址,因?yàn)镮P地址可能會變化,但是主機(jī)名一般不會變化。
[hadoop@K-Master hadoop] vi conf/masters K-Master
7)配置slaves文件(Master主機(jī)特有)
修改/usr/hadoop/conf/slaves文件,該文件指定哪些服務(wù)器節(jié)點(diǎn)是datanode節(jié)點(diǎn)。刪除locahost,添加所有datanode節(jié)點(diǎn)的主機(jī)名,如下所示。
[hadoop@K-Master hadoop] vi conf/slaves KVMSlave1 KVMSlave2 KVMSlave3
5、 配置KVMSlave的hadoop環(huán)境
下面以配置KVMSlave1的hadoop為例進(jìn)行演示,用戶需參照以下步驟完成其他KVMSlave服務(wù)器的配置。
1)以hadoop用戶遠(yuǎn)程登錄KVMSlave1服務(wù)器,拷貝K-Master主機(jī)的hadoop文件夾到本地/usr/目錄下;
[hadoop@KVMSlave1 ~]$ cd /usr/ [hadoop@KVMSlave1 usr]$ sudo scp -r hadoop@K-Master:/usr/hadoop/ . [hadoop@KVMSlave1 usr]$ sudo chown -R hadoop:hadoop hadoop/ #slaves文件內(nèi)容刪除,或者直接刪除slaves [hadoop@KVMSlave1 usr]$ rm /usr/hadoop/conf/slaves
2)配置環(huán)境變量
[hadoop@KVMSlave1 ~]$ sudo vi /etc/profile #HADOOP export HADOOP_HOME=/usr/hadoop export PATH=$PATH:$HADOOP_HOME/bin export HADOOP_HOME_WARN_SUPPRESS=1
使得hadoop命令在當(dāng)前終端立即生效;
[hadoop@KVMSlave1 ~]$ source /etc/profile
6、 格式化HDFS文件系統(tǒng)
格式化HDFS文件系統(tǒng)需要在namenode節(jié)點(diǎn)上通過hadoop用戶執(zhí)行,而且只需要執(zhí)行一次,下次啟動(dòng)時(shí)不需要??格式化,直接啟動(dòng)HDFS文件管理系統(tǒng)和MapReduce服務(wù)即可。
[hadoop@K-Master ~]$ hadoop namenode -format 14/07/24 16:37:57 INFO namenode.NameNode: STARTUP_MSG: /************************************************************ STARTUP_MSG: Starting NameNode STARTUP_MSG: host = K-Master/192.168.100.147 STARTUP_MSG: args = [-format] STARTUP_MSG: version = 1.2.1 STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1503152; compiled by 'mattf' on Mon Jul 22 15:23:09 PDT 2013 STARTUP_MSG: java = 1.7.0_65 ********************a****************************************/ 14/07/24 16:37:57 INFO util.GSet: Computing capacity for map BlocksMap 14/07/24 16:37:57 INFO util.GSet: VM type = 64-bit 14/07/24 16:37:57 INFO util.GSet: 2.0% max memory = 932184064 14/07/24 16:37:57 INFO util.GSet: capacity = 2^21 = 2097152 entries 14/07/24 16:37:57 INFO util.GSet: recommended=2097152, actual=2097152 14/07/24 16:37:58 INFO namenode.FSNamesystem: fsOwner=hadoop 14/07/24 16:37:58 INFO namenode.FSNamesystem: supergroup=supergroup 14/07/24 16:37:58 INFO namenode.FSNamesystem: isPermissionEnabled=true 14/07/24 16:37:58 INFO namenode.FSNamesystem: dfs.block.invalidate.limit=100 14/07/24 16:37:58 INFO namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s) 14/07/24 16:37:58 INFO namenode.FSEditLog: dfs.namenode.edits.toleration.length = 0 14/07/24 16:37:58 INFO namenode.NameNode: Caching file names occuring more than 10 times 14/07/24 16:37:58 INFO common.Storage: Image file /usr/hadoop/hdfs/name/current/fsimage of size 112 bytes saved in 0 seconds. 14/07/24 16:37:59 INFO namenode.FSEditLog: closing edit log: position=4, editlog=/usr/hadoop/hdfs/name/current/edits 14/07/24 16:37:59 INFO namenode.FSEditLog: close success: truncate to 4, editlog=/usr/hadoop/hdfs/name/current/edits 14/07/24 16:37:59 INFO common.Storage: Storage directory /usr/hadoop/hdfs/name has been successfully formatted. 14/07/24 16:37:59 INFO namenode.NameNode: SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down NameNode at K-Master/192.168.100.147 ************************************************************/
7、 啟動(dòng)HDFS文件管理系統(tǒng)
1)通過start-dfs.sh命令啟動(dòng)HDFS文件管理系統(tǒng),啟動(dòng)后通過如下日志信息可以看到分別啟動(dòng)了namenode節(jié)點(diǎn)(K-Master)、datanode節(jié)點(diǎn)(KVMSlave1、KVMSlave2、KVMSlave3)和secondarynamenode節(jié)點(diǎn)(K-Master)。
[hadoop@K-Master ~]$ start-dfs.sh starting namenode, logging to /usr/hadoop/libexec/../logs/hadoop-hadoop-namenode-K-Master.out KVMSlave1: starting datanode, logging to /usr/hadoop/libexec/../logs/hadoop-hadoop-datanode-KVMSlave1.out KVMSlave2: starting datanode, logging to /usr/hadoop/libexec/../logs/hadoop-hadoop-datanode-KVMSlave2.out KVMSlave3: starting datanode, logging to /usr/hadoop/libexec/../logs/hadoop-hadoop-datanode-KVMSlave3.out K-Master: starting secondarynamenode, logging to /usr/hadoop/libexec/../logs/hadoop-hadoop-secondarynamenode-K-Master.out
2)在K-Master節(jié)點(diǎn)上查看啟動(dòng)進(jìn)程
若打印如下日志信息,表明namenode節(jié)點(diǎn)啟動(dòng)了NameNode和SecondaryNameNode2服務(wù)進(jìn)程,即namenode節(jié)點(diǎn)HDFS文件管理系統(tǒng)啟動(dòng)成功。
[hadoop@K-Master ~]$ jps 6164 Jps 5971 NameNode 6108 SecondaryNameNode
3)在KVMSlave1節(jié)點(diǎn)上查看啟動(dòng)進(jìn)程
以hadoop用戶遠(yuǎn)程登錄KVMSlave1服務(wù)器,通過jps命令查看啟動(dòng)進(jìn)程。若打印如下日志信息,表明datanode節(jié)點(diǎn)啟動(dòng)了DataNode服務(wù)進(jìn)程,即KVMSlave1節(jié)點(diǎn)HDFS文件管理系統(tǒng)啟動(dòng)成功,用戶可在遠(yuǎn)程登錄其他datanode節(jié)點(diǎn)上查看其HDFS文件管理系統(tǒng)啟動(dòng)是否成功。
[hadoop@KVMSlave1 ~]$ jps 1327 Jps 1265 DataNode
8、 啟動(dòng)MapReduce
1)通過start-mapred.sh命令啟動(dòng)MapReduce分布式計(jì)算服務(wù),啟動(dòng)后通過以下日志信息可以看出在namenode節(jié)點(diǎn)上啟動(dòng)了jobtracker進(jìn)程,分別在datanode節(jié)點(diǎn)(KVMSlave1、KVMSlave2、KVMSlave3)上啟動(dòng)了tasktracker進(jìn)程。
[hadoop@K-Master ~]$ start-mapred.sh starting jobtracker, logging to /usr/hadoop/libexec/../logs/hadoop-hadoop-jobtracker-K-Master.out KVMSlave1: starting tasktracker, logging to /usr/hadoop/libexec/../logs/hadoop-hadoop-tasktracker-KVMSlave1.out KVMSlave2: starting tasktracker, logging to /usr/hadoop/libexec/../logs/hadoop-hadoop-tasktracker-KVMSlave2.out KVMSlave3: starting tasktracker, logging to /usr/hadoop/libexec/../logs/hadoop-hadoop-tasktracker-KVMSlave3.out
2)K-Master節(jié)點(diǎn)上查看啟動(dòng)進(jìn)程
若打印如下日志信息,表明namenode節(jié)點(diǎn)上新啟動(dòng)了JobTracker進(jìn)程,即namenode節(jié)點(diǎn)的JobTracker啟動(dòng)成功。
[hadoop@K-Master ~]$ jps 1342 NameNode 1726 Jps 1619 JobTracker 1480 SecondaryNameNode
3)KVMSlave1節(jié)點(diǎn)上查看啟動(dòng)進(jìn)程
以hadoop用戶遠(yuǎn)程登錄KVMSlave1服務(wù)器,通過jps命令查看啟動(dòng)進(jìn)程。若打印如下日志信息,表明KVMSlave1節(jié)點(diǎn)上新啟動(dòng)了TaskTracker進(jìn)程,即KVMSlave1節(jié)點(diǎn)的TaskTracker啟動(dòng)成功。用戶可遠(yuǎn)程登錄其他的datanode節(jié)點(diǎn)上查看TaskTracker是否啟動(dòng)成功。
[hadoop@KVMSlave1 ~]$ jps 1549 TaskTracker 1265 DataNode 1618 Jps
9、 命令查看Hadoop集群的狀態(tài)
通過簡單的jps命令雖然可以查看HDFS文件管理系統(tǒng)、MapReduce服務(wù)是否啟動(dòng)成功,但是無法查看到Hadoop整個(gè)集群的運(yùn)行狀態(tài)。我們可以通過hadoop dfsadmin -report進(jìn)行查看。用該命令可以快速定位出哪些節(jié)點(diǎn)掛掉了,HDFS的容量以及使用了多少,以及每個(gè)節(jié)點(diǎn)的硬盤使用情況。
[hadoop@K-Master ~]$ hadoop dfsadmin -report Configured Capacity: 238417846272 (222.04 GB) Present Capacity: 219128426496 (204.08 GB) DFS Remaining: 218227326976 (203.24 GB) DFS Used: 901099520 (859.36 MB) DFS Used%: 0.41% Under replicated blocks: 72 Blocks with corrupt replicas: 0 Missing blocks: 0 ------------------------------------------------- Datanodes available: 3 (3 total, 0 dead) Name: 192.168.100.144:50010 Decommission Status : Normal Configured Capacity: 79472615424 (74.01 GB) DFS Used: 300367872 (286.45 MB) Non DFS Used: 6218309632 (5.79 GB) DFS Remaining: 72953937920(67.94 GB) DFS Used%: 0.38% DFS Remaining%: 91.8% Last contact: Tue Feb 03 16:50:00 CST 2015 Name: 192.168.100.148:50010 Decommission Status : Normal Configured Capacity: 79472615424 (74.01 GB) DFS Used: 300367872 (286.45 MB) Non DFS Used: 6242603008 (5.81 GB) DFS Remaining: 72929644544(67.92 GB) DFS Used%: 0.38% DFS Remaining%: 91.77% Last contact: Tue Feb 03 16:49:59 CST 2015 Name: 192.168.100.146:50010 Decommission Status : Normal Configured Capacity: 79472615424 (74.01 GB) DFS Used: 300363776 (286.45 MB) Non DFS Used: 6828507136 (6.36 GB) DFS Remaining: 72343744512(67.38 GB) DFS Used%: 0.38% DFS Remaining%: 91.03% Last contact: Tue Feb 03 16:50:00 CST 2015