Hadoop2.7.4分散式叢集安裝配置檔案
叢集環境
- Hadoop版本為2.7.4
- JDK版本1.8.0_144
- 安裝了三臺虛擬機器分別設定名稱和IP如下
主機名稱 | IP地址 |
---|---|
master | 192.168.1.15 |
slave01 | 192.168.1.16 |
slave02 | 192.168.1.17 |
伺服器上安裝hadoop的目錄結構為
/home/使用者名稱
/hadoop
software: 存放的是安裝的軟體包
app : 存放的是所有軟體的安裝目錄
hadoop2.7.4就在app目錄下, 這裡我的機器的使用者都是nullhadoop主要配置檔案有core-site.xml,hdfs-site.xml,mapred-site.xml,yarn-site.xml
可以瀏覽官網檢視詳細的預設的配置,連結如下
hdfs-default.xml
mapred-default.xml
yarn-default.xml
也可以通過下載解壓hadoop後在目錄下搜尋*default.xml,找到這些預設配置
安裝Hadoop
下載hadoop並解壓到app目錄下
tar -zxvf hadoop-2.7.4.tar.gz -C ~/hadoop/app
配置Hadoop 環境變數
vim /etc/profile
新增
# Hadoop Env
export HADOOP_HOME=/home/null/hadoop/app/hadoop-2.7.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
修改$HADOOP_HOME/etc/hadoop下的配置檔案
$HADOOP_HOME就是hadoop安裝目錄位置
這裡只是將分散式叢集的一些必要的簡化了的配置羅列出來了,更個性化的配置還是要參照官方文件進行設定
修改hadoop-env.sh檔案
//修改JAVA_HOME路徑為jdk的安裝路徑
export JAVA_HOME=/home/null/hadoop/app/jdk1.8.0_144
修改yarn-env.sh檔案
//修改JAVA_HOME路徑為jdk的安裝路徑
export JAVA_HOME=/home/ null/hadoop/app/jdk1.8.0_144
修改slaves檔案
master 既作為 NameNode 也作為 DataNode
master
slave01
slave02
修改core-site.xml檔案
該檔案可以覆蓋一部分用於控制Hadoop核心的預設的關鍵配置
引數 | 預設值 | 解釋 |
---|---|---|
fs.defaultFS | file:/// | namenode RPC互動埠 |
fs.default.name | file:/// | 被棄用,是用fs.defaultFS代替 |
hadoop.tmp.dir | /tmp/hadoop-${user.name} | 其他臨時目錄的根地址 |
先在$HADOOP_HOME目錄下手動建立tmp資料夾,等下指定hadoop.tmp.dir為它,hadoop.tmp.dir是hadoop檔案系統依賴的基礎配置,很多路徑都依賴它。hdfs-site-xml中預設配置namenode 和datanode的存放位置的地址就是基於此。 LINUX 系統中,在服務重啟後,/tmp 下的目錄被清空,所以要轉到持久化的地址
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/null/hadoop/app/tmp</value>
</property>
</configuration>
修改hdfs-site.xml檔案
通過該配置檔案可以修改有關的HDFS的預設配置
引數 | 預設值 | 解釋 |
---|---|---|
dfs.replication | 3 | 決定著系統裡面的檔案塊的資料備份個數 |
dfs.namenode.secondary.http-address | 0.0.0.0:50090 | secondary namenode服務地址和埠 |
dfs.namenode.name.dir | file://${hadoop.tmp.dir}/dfs/name | 決定namenode的fsimage檔案在本地檔案系統的儲存位置,如果是以逗號分割的目錄列表,將會複製到所有目錄中,冗餘 |
dfs.datanode.data.dir | file://${hadoop.tmp.dir}/dfs/data | 決定datanode的資料塊在本地檔案系統的儲存位置,如果目錄不存在將被建立如果許可權允許的話 |
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
副本數目不能大於datanode數目
在core-site.中配置了hadoop.tmp.dir,這裡保持預設即可
修改mapred-site.xml檔案
該檔案中的屬性可以覆蓋用於控制MapReduce任務執行的預設屬性值
引數 | 預設值 | 解釋 |
---|---|---|
mapreduce.framework.name | local | MapReduce 作業的執行框架 |
mapreduce.jobhistory.address | 0.0.0.0:10020 | MapReduce的歷史伺服器通訊地址 |
mapreduce.jobhistory.webapp.address | 0.0.0.0:19888 | MapReduce的歷史伺服器web介面地址 |
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
預設情況下,Hadoop歷史伺服器是沒有啟動的,我們可以通過下面的命令來啟動Hadoop歷史伺服器
sbin/mr-jobhistory-daemon.sh start historyserver
修改yarn-site.xml檔案
該檔案中的配置項可以覆蓋用於控制YARN元件中的預設屬性值
引數 | 預設值 | 解釋 |
---|---|---|
yarn.nodemanager.aux-services | 無 | NodeManager上執行的附屬服務。需配置成mapreduce_shuffle,才可執行MapReduce程式 |
yarn.resourcemanager.hostname | 0.0.0.0 | ResourceManager的主機名 |
yarn.resourcemanager.address | ${yarn.resourcemanager.hostname}:8032 | ResourceManager 對客戶端暴露的地址。客戶端通過該地址向RM提交應用程式,殺死應用程式等 |
yarn.resourcemanager.scheduler.address | ${yarn.resourcemanager.hostname}:8030 | ResourceManager 對ApplicationMaster暴露的訪問地址。ApplicationMaster通過該地址向RM申請資源、釋放資源等 |
yarn.resourcemanager.webapp.address | ${yarn.resourcemanager.hostname}:8088 | ResourceManager對外web ui地址。使用者可通過該地址在瀏覽器中檢視叢集各類資訊 |
yarn.nodemanager.resource.memory-mb | 8192 | NodeManager總的可用實體記憶體。注意,該引數是不可修改的,一旦設定,整個執行過程中不可動態修改。另外,該引數的預設值是8192MB,即使你的機器記憶體不夠8192MB,YARN也會按照這些記憶體來使用 |
yarn.nodemanager.resource.cpu-vcores | 8 | NodeManager總的可用虛擬CPU個數 |
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>1024</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>1</value>
</property>
</configuration>
這裡我架設的虛擬機器是1g記憶體1CPU1核的 ,沒設定最後兩個屬性時,NodeManager啟動報錯記憶體不足
相關問題可以參考我的另外一篇部落格
啟動Hadoop叢集
格式化檔案系統
在master中執行
hdfs namenode -format
啟動NameNode和DataNode
在master $HADOOP_HOME下執行
sbin/.start-dfs.sh
使用jps命令檢視master上的程序如下
DataNode
SecondaryNameNode
NameNode
Jps
使用jps命令分別檢視slave01和slave02上的程序如下
Jps
DataNode
啟動 ResourceManager 和 NodeManager
在master $HADOOP_HOME下執行
sbin/start-yarn.sh
使用jps命令檢視master上的程序如下
DataNode
NodeManager
ResourceManager
SecondaryNameNode
NameNode
Jps
使用jps命令分別檢視slave01和slave02上的程序如下
Jps
NodeManager
DataNode
終於!Hadoop叢集成功啟動