1. 程式人生 > 其它 >大資料規整-3-hadoop的偽分散式安裝

大資料規整-3-hadoop的偽分散式安裝

技術標籤:大資料規整

1 安裝JAVA

# tar -xzvf jdk-8u181-linux-x64.tar.gz -C /usr/local/
# vi /root/.bashrc
export JAVA_HOME=/usr/local/jdk1.8.0_181
export PATH=$JAVA_HOME/bin:$PATH
# source /root/.bashrc 
# java -version

2 安裝配置SSH免密登入

# rpm -qa | grep ssh檢視是否安裝ssh
# yum install openssh-clients
# sudo yum install openssh-server
# ssh localhost測試ssh是否可用,需要輸入密碼
# cd /root/.ssh若沒有該目錄,請先執行一次ssh localhost
# ssh-keygen -t rsa會有提示,都按回車就可以
# cat id_rsa.pub >> authorized_keys加入授權
# chmod 600 authorized_keys 修改檔案許可權

3 hadoop偽分佈

3.1 解壓hadoop

$ sudo tar -xzvf /home/hadoop/Desktop/hadoop-2.8.0.tar.gz -C /usr/local
$ cd /usr/local
$ sudo mv ./hadoop-2.8.0/ ./hadoop
$ sudo chown -R hadoop:hadoop ./hadoop/
# /usr/local/hadoop/bin/hadoop version檢查是否可用,成功則顯示 Hadoop 版本資訊
$ sudo gedit /home/hadoop/.bashrc配置環境變數
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop
export HADOOP_CLASSPATH=/usr/local/hadoop/share/hadoop/common/lib
$ source /home/hadoop/.bashrc

考慮是否新增以下內容:
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

3.2 配置偽分佈hadoop

(1)Hadoop 可以在單節點上以偽分散式的方式執行,Hadoop 程序以分離的 Java 程序來執行,
節點既作為 NameNode 也作為 DataNode,同時,讀取的是 HDFS 中的檔案。

$ cd /usr/local/hadoop/etc/hadoop/

(2)需要注意以下檔案
hadoop-env.sh
log4j.properties

slaves
core-site.xml
hdfs-site.xml
yarn-site.xml

mapred-site.xml.template

(3)偽分散式需要修改3個配置檔案 core-site.xml 和 hdfs-site.xml和slaves

3.2.1 core-site.xml

<configuration>
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://localhost:9000</value>
  <description>The name of the default file system.</description>
</property>
<property>
  <name>hadoop.tmp.dir</name>
  <value>file:/usr/local/hadoop/tmp</value>
  <description>A base for other temporary directories.</description>
</property>
</configuration>

3.2.2 hdfs-site.xml

<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/usr/local/hadoop/tmp/dfs/name</value>
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/usr/local/hadoop/tmp/dfs/data</value>
  </property>
  <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>localhost:50090</value>
  </property>
  <property>
    <name>dfs.namenode.checkpoint.dir</name>
    <value>file:/usr/local/hadoop/tmp/dfs/namesecondary</value>
  </property>
  </configuration>

3.2.3 mapred-site.xml[若啟動yarn必設]

$ cp mapred-site.xml.template mapred-site.xml

<configuration>
<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>
<property>
  <name>mapreduce.jobhistory.address</name>
  <value>localhost:10020</value>
</property>
<property>
  <name>mapreduce.jobhistory.webapp.address</name>
  <value>localhost:19888</value>
</property>
</configuration>

3.2.4 yarn-site.xml[若啟動yarn必設]

<configuration>
 <!-- Site specific YARN configuration properties -->
 <property>
     <name>yarn.nodemanager.aux-services</name>
     <value>mapreduce_shuffle</value>
   </property>
 <property>
     <name>yarn.resourcemanager.hostname</name>
     <value>localhost</value>
 </property>
 <!--開啟HDFS上日誌記錄功能-->
 <property>
     <name>yarn.log-aggregation-enable</name>
     <value>true</value>
 </property>
 <!--在HDFS上聚合的日誌最長保留多少秒。3天-->
 <property>
      <name>yarn.log-aggregation.retain-seconds</name>
      <value>259200</value>
 </property>
 <property>
 <name>yarn.nodemanager.vmem-check-enabled</name>
 <value>false</value>
 <description>whether virtual memory limits will be enforced for containers</description>
 </property>
 </configuration>

3.2.5 slaves

localhost

3.2.6 hadoop-env.sh

在叢集環境下,即使各結點都正確地配置了JAVA_HOME,也可能報錯。
解決方法:在hadoop-env.sh中,再顯示地重新宣告一遍JAVA_HOME
export JAVA_HOME=/usr/local/jdk1.8.0_144

3.3 格式化啟動

執行 NameNode 的格式化
【成功的話,會看到successfully formatted和Exitting with status 0 的提示】
Storage directory /usr/local/hadoop/tmp/dfs/name has been successfully formatted.

$ hdfs namenode -format
在這裡插入圖片描述

出現籃框裡的內容表示格式化成功。

(1)#start-dfs.sh啟動

通過 ./sbin/start-dfs.sh 啟動 Hadoop,僅僅是啟動了 MapReduce 環境。

NameNode

SecondaryNameNode

DataNode

http://localhost:50070,檢視叢集狀態

http://llocalhost:8088,檢視作業執行情況

(2)#stop-dfs.sh關閉

4 啟動YARN

【偽分散式不啟動 YARN 也可以,一般不會影響程式執行)】
我們可以啟動 YARN ,讓 YARN 來負責資源管理與任務排程。
【需要再修改2個配置檔案mapred-site.xml和yarn-site.xml】

(1)修改配置檔案

#cd /usr/local/hadoop/etc/hadoop/
#mv mapred-site.xml.template mapred-site.xml

#vi mapred-site.xml 【配置檔案】

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

#vi yarn-site.xml【配置檔案】

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
        </property>
</configuration>

【如果不想啟動 YARN,務必把配置檔案 mapred-site.xml 重新命名,】
【改成 mapred-site.xml.template,需要用時改回來就行。】

(2)啟動yarn
#start-yarn.sh啟動YARN
#mr-jobhistory-daemon.sh start historyserver 開啟歷史伺服器,才能在Web中檢視任務執行情況

【YARN 主要是為叢集提供更好的資源管理與任務排程,然而這在單機上體現不出價值】
【反而會使程式跑得稍慢些。因此在單機上是否開啟 YARN 就看實際情況了。】

(3)關閉YARN
#stop-yarn.sh
#mr-jobhistory-daemon.sh stop historyserver