第三篇 hadoop安裝
阿新 • • 發佈:2021-07-07
前期準備
需要把hadoop-2.7.3.tar.gz拷貝到/usr/local/src/目錄下,並進行解壓
進入到/usr/local/src/目錄下進行解壓命令
tar -zxvf hadoop-2.7.3.tar.gz
- 進入到/usr/local/src/hadoop-2.7.3/etc/hadoop/目錄修改對應檔案
core-site.xml檔案如下:
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!--關注微信公眾號:阿布的進擊--> <!--檔案:core-site.xml --> <!--參考地址 http://hadoop.apache.org/docs/r2.7.3/--> <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> <description>用來指定預設的檔案系統</description> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/local/src/hadoop-2.7.3/tmp</value> <description>hadoop臨時檔案存放目錄</description> </property> </configuration>
hdfs-site.xml檔案如下:
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!--關注微信公眾號:阿布的進擊--> <!--檔案:hdfs-site.xml --> <!--參考地址 http://hadoop.apache.org/docs/r2.7.3/--> <configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>master:9001</value> <description>secondaryNamenode地址和埠</description> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/src/hadoop-2.7.3/dfs/name</value> <description>儲存FsImage映象的目錄,作用是存放hadoop的名稱節點namenode裡的metadata</description> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/src/hadoop-2.7.3/dfs/data</value> <description>存放HDFS檔案系統資料檔案的目錄,作用是存放hadoop的資料節點datanode裡的多個數據塊</description> </property> <property> <name>dfs.replication</name> <value>2</value> <description>block塊副本數,預設值3</description> </property> </configuration>
mapred-site.xml檔案如下:
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!--關注微信公眾號:阿布的進擊--> <!--檔案:mapred-site.xml --> <!--參考地址 http://hadoop.apache.org/docs/r2.7.3/--> <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> <description>指定執行mapreduce的環境是yarn</description> </property> <!--hadoop歷史伺服器--> <property> <name>mapreduce.jobhistory.address</name> <value>master:10020</value> <description>MR JobHistory伺服器程序間通訊地址</description> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master:19888</value> <description>MR JobHistory伺服器的使用者介面地址</description> </property> <property> <name>mapreduce.jobhistory.done-dir</name> <value>/mr-history/done</value> <description>已執行完畢作業資訊儲存位置</description> </property> <property> <name>mapreduce.jobhistory.intermediate-done-dir</name> <value>/mr-history/tmp</value> <description>正在執行的作業資訊儲存位置</description> </property> <property> <name>yarn.app.mapreduce.am.staging-dir</name> <value>/mr-history/hadoop-yarn/</value> <description>MR作業在提交時所使用的臨時目錄, 是一個本地路徑</description> </property> <property> <name>mapreduce.map.memory.mb</name> <value>2048</value> <description>排程器為每個map task申請的記憶體數,各Job也可以單獨指定,如果實際使用的資源量超過該值,則會被強制殺死</description> </property> <property> <name>mapreduce.reduce.memory.mb</name> <value>2048</value> <description>排程器為每個reduce task申請的記憶體數,同map task,超出強制殺死</description> </property> <property> <name>mapreduce.job.reduce.slowstart.completedmaps</name> <value>0.8</value> <description>當map task完成80%時,為reduce申請資源,reduce開始進行拷貝map結果資料和做reduce shuffle操作,預設0.05</description> </property> </configuration>
slaves檔案如下:
slave1
slave2
yarn-site.xml檔案如下:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--關注微信公眾號:阿布的進擊-->
<!--檔案:yarn-site.xml -->
<!--參考地址 http://hadoop.apache.org/docs/r2.7.3/-->
<configuration>
<!--日誌聚合相關-->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
<description>開啟日誌聚合功能,開啟後日志保存在hdfs上</description>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>86400</value>
<description>聚合後的日誌在hdfs上的儲存時間,單位為秒</description>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://master:19888/jobhistory/logs</value>
<description>日誌聚合伺服器URL</description>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
<description>NodeManager上執行的附屬服務,需配置成mapreduce_shuffle,才可執行MapReduce程式</description>
</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>master:8032</value>
<description>RM 對客戶端暴露的地址。客戶端通過該地址向RM提交應用程式,殺死應用程式</description>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
<description>RM 對ApplicationMaster暴露的訪問地址。AM通過該地址向RM申請資源、釋放資源</description>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8035</value>
<description>RM 對NodeManager暴露的地址,NM通過該地址向RM彙報心跳,領取任務</description>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
<description>RM 對管理員暴露的訪問地址。管理員通過該地址向RM傳送管理命令等</description>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
<description>RM對外web ui地址。使用者可通過該地址在瀏覽器中檢視叢集各類資訊</description>
</property>
<!-- 關閉虛擬記憶體檢查-->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
<description>是否啟動一個執行緒檢查每個任務正使用的實體記憶體量,如果任務超出分配值,則直接將其殺掉,預設為true</description>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
<description>是否啟動一個執行緒檢查每個任務正使用的虛擬記憶體量,如果任務超出分配值,則直接將其殺掉,預設是true</description>
</property>
</configuration>
- 進入到/usr/local/src/hadoop-2.7.3/目錄下建立對應目錄
mkdir -p dfs/data
mkdir -p dfs/name
mkdir tmp
- 配置/root/.bashrc全域性環境變數,如下:
進入vi /root/.bashrc,進行新增如下內容:
# set hadoop environment
export HADOOP_HOME=/usr/local/src/hadoop-2.7.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
新增之後esc退出儲存,並重新載入環境變數
source /root/.bashrc
搭建hadoop叢集條件
需要準備三臺centos7系統;每個系統節點,都需要關閉防火牆(iptables,selinux)、jdk、互信、ip對映
VM克隆slave兩臺
- 克隆完兩臺slave之後,修改對應IP地址,並重新啟動網路
/etc/init.d/network restart
- 配置三臺對應hostname,操作命令如下:
hostnamectl set-hostname master
- 配置主機檔案(每一個節點都需要執行)
vi /etc/hosts
192.168.127.130 master
192.168.127.131 slave1
192.168.127.132 slave2
修改為一臺機器的hosts檔案之後,也可以通過scp進行分發hosts檔案,操作命令如下:
scp -r /etc/hosts root@slave1:/etc/
提示輸入yes/no,輸入yes;
提示輸入slave1的密碼,輸入slave1密碼,就會自動分發到對應節點,依次類推發到slave2節點
- SSH互信配置
ssh-keygen -t rsa
三次回車生成金鑰(每一個節點都需要執行)
生成公鑰(主節點執行)
cat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
複製其他節點的公鑰(主節點執行)
ssh slave1 cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
ssh slave2 cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys# 複製公鑰到其他節點(主節點執行)
scp /root/.ssh/authorized_keys root@slave1:/root/.ssh/authorized_keys
scp /root/.ssh/authorized_keys root@slave2:/root/.ssh/authorized_keys
免密SSH測試
ssh slave1 ip addr
ssh slave2 ip addr