1. 程式人生 > >Hadoop系列(一): Hadoop的偽分散式安裝

Hadoop系列(一): Hadoop的偽分散式安裝

在進行Hadoop的偽分散式安裝之前,我們首先對Hadoop的一些基礎的要點進行一下說明。關於Hadoop的詳細概念,我們可以在搜狗百科上找到很詳細的答案。

Hadoop是由Apache基金會開發的一個分散式檔案系統,用來儲存,訪問和計算海量資料的框架。

Hadoop 3大核心元件:

 HDFS(Hadoop Distributed File System)
分散式檔案系統
 MapReduce
分散式運算框架(資料的計算)
 YARE(Yet Another Resource Negotiator)
資源管理排程系統(硬體資源管理:cpu 磁碟 記憶體)

這些都和我們接下來的配置緊密相連。

首先我們需要把hadoop-2.8.4.tar.gz通過SecureCRTPortable工具上傳到我們的虛擬機器內。我是上傳到了我的app資料夾中並進行了解壓。

使用tar -zxvf  hadoop-2.8.4.tar.gz命令即可。接下來就要進入到hadoop偽分散式安裝的主要內容了。

目錄

1.環境變數的配置

開啟hadoop的各個資料夾我們會發現很多的jar包,這說明hadoop是通過java編寫的。想要執行hadoop服務,這就要求我們為我的linux上安裝jdk。至於安裝jdk的過程我在之前的部落格中提到過。

配置完成jdk,我們還需要配置一些關於hadoop的環境變數,告訴我們的linux關於hadoop的一些指令要到哪裡進行查詢

具體的配置如下

export HADOOP_HOME=/home/hadoop/app/hadoop-2.8.4

export PATH=$JAVA_HOME/bin:$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

2.一些基礎檔案的配置

在進行基礎檔案的配置之前,我們希望我們的當前使用者。我的使用者名稱是hadoop取得對我的hadoop應用的所有權。

那麼我們需要進入root許可權下給我們的使用者賦予這個權力。

chown -R hadoop:hadoop /home/app/hadoop-2.8.4   這個地方是我的hadoop的解壓目錄

至於這樣做的原因之後我會再詳細說明。

接下來我們需要對我們的一些配置檔案進行新增內容,比如設定資料快取的倉庫。

我們首先進入 hadoop-2.8.4資料夾下的etc/hadoop/內

首先是core-site.xml檔案。

在<configuration></configuration>標籤內新增如下內容

<property>
		<name>fs.defaultFS</name>
		<value>hdfs://192.168.7.100:9000</value>
	</property>
<!-- 指定hadoop執行時產生檔案的儲存目錄 -->
	<property>
		<name>hadoop.tmp.dir</name>
  		<value>/home/hadoop/app/hadoop-2.8.4/tmp</value>
	</property>

其中的是192.168.7.100是我的虛擬機器的ip地址。可以通過ifconfig進行檢視。這個地方不要宣告為主機名,在我的虛擬機器上聲明瞭主機名會導致namenode無法啟動。

下方的資料夾設定則是根據我的hadoop安裝位置設定的

剩下的路徑設定原理與此相同不再重複

在hdfs-site.xml中的<configuration></configuration>標籤內新增如下內容

	<property>
		<name>dfs.nameservices</name>
		<value>hadoop-cluster</value>
	</property>
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>/home/hadoop/app/hadoop-2.8.4/hdfs/nn</value>
	</property>
	<property>
		<name>dfs.namenode.checkpoint.dir</name>
		<value>/home/hadoop/app/hadoop-2.8.4/hdfs/snn</value>
	</property>
	<property>
		<name>dfs.namenode.checkpoint.edits.dir</name>
		<value>/home/hadoop/app/hadoop-2.8.4/hdfs/snn</value>
	</property>
	<property>
		<name>dfs.datanode.data.dir</name>
		<value>/home/hadoop/app/hadoop-2.8.4/hdfs/dn</value>
	</property>

在mapred-site.xml中的<configuration></configuration>標籤內新增如下內容

	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>

在yarn-site.xml中的<configuration></configuration>標籤內新增如下內容

<!-- 指定ResourceManager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>192.168.196.129</value>
</property>
<!-- 指定reducer獲取資料的方式-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/home/hadoop/app/hadoop-2.8.4/yarn/nm</value>
</property>

這個地方的ResourceManager的地址我同樣設定成為了我的虛擬機器的ip地址

這些配置檔案修改完成後。我們需要格式化namenode。但是我的虛擬機器在普通使用者下沒有此許可權,所以才有了最開始通過root使用者賦予普通使用者許可權的操作

操作命令   hdfs namenode -format

命令完成後。我們的偽分散式系統就算搭建完成了。這個時候我們可以進入到sbin資料夾下。通過執行

sh start-all.sh命令來啟動的hadoop服務。

這個地方有些人會遇到這樣的錯誤

Incorrect configuration: namenode address dfs.namenode.servicerpc-address or dfs.namenode.rpc-address is not configured.

那麼這就需要我們到core-site.xml檔案中檢視我們的ip地址是否配置正確。如果配置正確那麼我們使用jps指令可以看到這些

18482 DataNode
18900 Jps
18853 NodeManager
18743 ResourceManager
18360 NameNode

這個地方可能有些人會檢視不到DataNode啟動,那麼可以參考這篇部落格

進行一下相關的配置屬性修改即可。

3.ssh免密登入

在完成了hadoop的配置之後,我們可以使用ssh協議進行登入和操作hadoop平臺。

但是每次我們使用 ssh   主機名/IP地址都需要密碼

那麼如果想要實現免密登入,應該怎麼處理。

首先輸入一條命令生成金鑰 

ssh-keygen -t rsa

這條命令在執行完之後,會在我們的當前使用者的資料夾下。比如我的就是/home/hadoop資料夾下生成一個.ssh資料夾

進入當前的使用者資料夾的方式是使用cd ~指令

進入到這個資料夾中,執行

cat id_rsa.pub >> ~/.ssh/authorized_keys

將公鑰檔案寫入到authorized_keys中。

之後我們需要設定authorized_keys許可權

chmod 600 ./authorized_keys

這樣ssh免密登入就設定成功了。

4.50070埠監聽介面

當我們使用sh start-all.sh啟動hadoop服務之後,我們可以使用ip:50070來訪問監聽介面。當我們開啟hadoop安裝包的資料夾我們會發現一些關於伺服器的jar包。當我們啟動hadoop服務以後,就相當於我們啟動我們的web伺服器,這些伺服器監聽了一些埠。我們可以發出一些請求檢視一些頁面。比如這個監聽介面就是這樣