僞分佈式系列 - 第一篇 - hadoop-3.2.0環境搭建

Hadoop的三種運行模式

單機模式

  • 該模式用於開發和調式
  • 不對配置文件進行修改
  • 使用本地文件系統
  • 沒有namenode,datanode,resoucrcemanager,nodemanager等進程,是單進程的服務在執行所有邏輯

僞分佈式模式

  • 有namenode,datanode,resoucrcemanager,nodemanager等進程,這些進程運行在同一臺服務器上
  • 守護進程之間走的是rpc通訊協議,和完全分佈式一致
  • 存儲使用的也是hdfs,副本數爲1

全分佈式集羣模式

  • 有namenode,datanode,resoucrcemanager,nodemanager等進程,這些進程運行在不同的服務器上
  • 守護進程之間走的是rpc通訊協議
  • hdfs是完全分佈式的,副本數默認是3
  • hdfs可以配置高可用(熱備),namenode聯邦等
  • yarn也可配置高可用,yarn的聯邦
  • yarn上的計算是完全分佈式,分佈在集羣各臺機器上

環境準備

系統環境

  • 系統版本
    在這裏插入圖片描述
  • 內存
    在這裏插入圖片描述
  • 磁盤
    在這裏插入圖片描述

ssh免密碼連接

執行命令:ssh-keygen -t rsa 一路回車即可

複製祕鑰到本地: cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

驗證 ssh 本機ip 成功

防火牆關閉

systemctl stop firewalld.service #停止firewall

systemctl disable firewalld.service #禁止firewall開機啓動

jdk安裝配置

安裝方式自行百度

配置java_home,vim /etc/profile
export JAVA_HOME=/usr/local/java_1.8.0_121
export JAVA_BIN=JAVAHOME/binexportJAVALIB=JAVA_HOME/bin export JAVA_LIB=JAVA_HOME/lib
export CLASSPATH=.:JAVALIB/tools.jar:JAVA_LIB/tools.jar:JAVA_LIB/dt.jar
export PATH=JAVABIN:JAVA_BIN:PATH

驗證:java -version
在這裏插入圖片描述
安裝jdk1.8+的版本

相關環境變量配置

host配置

vim /etc/hosts

192.168.1.42 ecs-6531-0002.novalocal

安裝包下載

下載地址:https://hadoop.apache.org/releases.html
在這裏插入圖片描述
版本自行選擇,我們選擇最新的3.2.0版本

Hadoop配置

解壓

  • 命令:tar zcvf ~/soft/hadoop-3.2.0.tar.gz -C ./

hadoop文件配置

  • core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <!--指定HADOOP所使用的文件系統schema(URI),HDFS的老大(NameNode)的地址-->
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://ecs-6531-0002.novalocal:9000</value>   
  </property>
  <!--指定HADOOP運行時產生文件的存儲目錄-->
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/data/hadoop/hdfs/meta</value>   
  </property>    
</configuration>
  • hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <!--指定HDFS副本的數量-->
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
</configuration>
  • yarn-site.xml
<?xml version="1.0"?>
<configuration>
    <!-- 指定YARN(ResourceManager)的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>ecs-6531-0002.novalocal</value>
    </property>
    <!-- 指定reducer獲取數據的方式,此處做了mapreduce和spark配置,如果沒有spark可以先關閉spark_shuffle配置 -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle,spark_shuffle</value>
    </property>
    <!-- spark shuffle的類 -->
    <property>
       <name>yarn.nodemanager.aux-services.spark_shuffle.class</name>
       <value>org.apache.spark.network.yarn.YarnShuffleService</value>
    </property>
    <!-- nodemanager的總內存量,我們服務器是64GB,此處配置大概60GB -->
    <property>
        <description>Amount of physical memory, in MB, that can be allocated for containers.</description>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>61440</value>
    </property>
	<!-- yarn最小分配內存 -->
    <property>
        <description>The minimum allocation for every container request at the RM,
                     in MBs. Memory requests lower than this won't take effect,
                     and the specified value will get allocated at minimum.</description>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>512</value>
    </property>
    <!-- yarn最大分配內存 -->
    <property>
        <description>The maximum allocation for every container request at the RM,
                     in MBs. Memory requests higher than this won't take effect,
                     and will get capped to this value.</description>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>8192</value>
    </property>

    <!-- 聚合log 方便後面開啓history服務 -->
    <property>
    	<name>yarn.log-aggregation-enable</name>
    	<value>true</value>
    </property>
    <property>
    	<name>yarn.log-aggregation.retain-seconds</name>
    	<value>2592000</value>
    </property>
    <!-- 歷史服務器web地址 -->
    <property>
    	<name>yarn.log.server.url</name>
    	<value>http://ecs-6531-0002.novalocal:8988/jobhistory/logs</value>
    </property>
    <!-- log數據存放hdfs地址 -->
    <property>
    	<name>yarn.nodemanager.remote-app-log-dir</name>
    	<value>hdfs://ecs-6531-0002.novalocal:9000/user/root/yarn-logs/</value>
    </property>

    <!-- 此處cpu核數,我們機器是16,此處不可多配,建議略小於系統CPU核數 -->
  <property>
    <description>Number of vcores that can be allocated
    for containers. This is used by the RM scheduler when allocating
    resources for containers. This is not used to limit the number of
    CPUs used by YARN containers. If it is set to -1 and
    yarn.nodemanager.resource.detect-hardware-capabilities is true, it is
    automatically determined from the hardware in case of Windows and Linux.
    In other cases, number of vcores is 8 by default.</description>
    <name>yarn.nodemanager.resource.cpu-vcores</name>
    <value>16</value>
  </property>
    <!-- cpu最小分配 -->
  <property>
    <description>The minimum allocation for every container request at the RM
    in terms of virtual CPU cores. Requests lower than this will be set to the
    value of this property. Additionally, a node manager that is configured to
    have fewer virtual cores than this value will be shut down by the resource
    manager.</description>
    <name>yarn.scheduler.minimum-allocation-vcores</name>
    <value>1</value>
  </property>
    <!-- cpu最大分配 -->
  <property>
    <description>The maximum allocation for every container request at the RM
    in terms of virtual CPU cores. Requests higher than this will throw an
    InvalidResourceRequestException.</description>
    <name>yarn.scheduler.maximum-allocation-vcores</name>
    <value>3</value>
  </property>
    <!-- classpath配置 -->
  <property>
    <name>yarn.application.classpath</name>
 <value>/opt/bigdata/hadoop/default/etc/hadoop:/opt/bigdata/hadoop/default/share/hadoop/common/lib/*:/opt/bigdata/hadoop/default/share/hadoop/common/*:/opt/bigdata/hadoop/default/share/hadoop/hdfs:/opt/bigdata/hadoop/default/share/hadoop/hdfs/lib/*:/opt/bigdata/hadoop/default/share/hadoop/hdfs/*:/opt/bigdata/hadoop/default/share/hadoop/mapreduce/lib/*:/opt/bigdata/hadoop/default/share/hadoop/mapreduce/*:/opt/bigdata/hadoop/default/share/hadoop/yarn:/opt/bigdata/hadoop/default/share/hadoop/yarn/lib/*:/opt/bigdata/hadoop/default/share/hadoop/yarn/*</value>
  </property>
</configuration>
  • mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
	<!--指定mr運行在yarn上-->
	<property>
	  <name>mapreduce.framework.name</name>
	  <value>yarn</value>
	</property>
	<!-- 歷史服務器配置,同步mapreduce任務到歷史服務器 -->
	<property>
	    <name>mapreduce.jobhistory.address</name>
	    <value>ecs-6531-0002.novalocal:10020</value>
	</property>
	<property>
	    <name>mapreduce.jobhistory.webapp.address</name>
	    <value>ecs-6531-0002.novalocal:8988</value>
	</property>
	<!-- 歷史服務器緩存任務數 -->
	<property>
	    <name>mapreduce.jobhistory.joblist.cache.size</name>
	    <value>5000</value>
	</property>
</configuration>

  • workers
localhost   // 此處是配置的本機
JAVA_HOME=/usr/local/java_1.8.0_121

linux環境配置

  • /etc/profile文件配置
# hadoop 相關配置
export HADOOP_HOME=/opt/bigdata/hadoop/default
#export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib:$HADOOP_PREFIX/lib/native"
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
#export HADOOP_ROOT_LOGGER=DEBUG,console
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
#hadoop-3.1.0必須添加如下5個變量否則啓動報錯,hadoop-2.x貌似不需要
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
  • 應用一下環境: source /etc/profile

啓動服務

格式化NameNode

命令: hdfs namenode -format 

中間沒有報錯並且最後顯示如下信息表示格式化成功

...
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at ecs-6531-0002
************************************************************/

如果格式化NameNode之後運行過hadoop,然後又想再格式化一次NameNode,那麼需要先刪除第一次運行Hadoop後產生的VERSION文件,否則會出錯

啓動

  • start-all.sh 啓動所有服務,啓動日誌在hadoop軟件目錄的logs下
    在這裏插入圖片描述
  • jps查看服務進程
    6662 Jps
    9273 DataNode #hdfs worker節點
    5465 SecondaryNameNode #hdfs備份節點
    9144 NameNode #hdfs主節點
    9900 NodeManager #yarn的worker節點
    9575 ResourceManager #yarn的主節點
  • 啓動歷史任務服務器
    命令:mapred --daemon start historyserver
    jps看到
    12710 JobHistoryServer
  • 停止集羣 stop-all.sh 命令

web頁面

簡單使用

hdfs

  • hdfs dfs -ls /
    在這裏插入圖片描述

yarn

  • yarn application -list
    在這裏插入圖片描述

大家可以自行百度或者下面給單獨給大家講一下,請繼續關注後續文章.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章