Hadoop(一)Hadoop核心架構與安裝

chester·chen發表於2022-04-29

Hadoop是什麼

大白話,Hadoop是個儲存資料,計算資料的分散式框架。核心元件是HDFS、MapReduce、Yarn。

HDFS:分散式儲存

MapReduce:分散式計算

Yarn:排程MapReduce

現在為止我們知道了HDFS、MapReduce、Yarn是幹啥的,下面通過一張圖再來看看他的整體架構。

HDFS

HDFS是Hadoop的儲存系統,將龐大的資料儲存在多臺機器上,並通過資料副本冗餘實現容錯。HDFS兩大核心元件是NameNode與DataNode。

NameNode:管理檔案名稱空間後設資料;實現檔案命名、開啟關閉操作

SecondaryNameNode:幫助NameNode實現log與資料快照的合併

DataNode:根據客戶請求實現檔案的讀寫

MapReduce

MapReduce是基於Java開發的分散式計算。包含重要的兩部分,Map和Reduce。

Map:將資料轉成鍵值對

Reduce:將Map的輸出資料聚合減少

 

Yarn

通過對叢集資源的監控,排程MapReduce的任務。核心元件有ResourceManager、NodeManager、ApplicationMaster 和 Container。

ResourceManager:處理客戶端請求;監控NodeManager與ApplicationMaster;排程資源。

NodeManager:管理節點資源;與ResourceManager ApplicationMaster互動。

ApplicationMaster:為程式申請資源並將資源分配給任務;任務監控。

安裝Hadoop

1.安裝Jdk

下載https://www.oracle.com/java/technologies/downloads/

解壓

tar -zxvf jdk-8u331-linux-x64.tar.gz

加入環境變數

vi /etc/profile

#加入以下內容
JAVA_HOME=/usr/local/java18/jdk1.8.0_331
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH


//生效
source  /etc/profile

驗證java

2.安裝偽分散式Hadoop

下載https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.2.3/hadoop-3.2.3.tar.gz

解壓

tar xzf hadoop-3.2.3.tar.gz

配置本機ssh

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

配置Hadoop環境變數

cat etc/hadoop/hadoop-env.sh

export JAVA_HOME=/usr/local/java/jdk1.8

配置hdfs地址

cat etc/hadoop/core-site.xml

    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>

配置hafs分片數

cat etc/hadoop/hdfs-site.xml
<property> <name>dfs.replication</name> <value>1</value> </property>
 
/etc/profile新增hadoop環境變數
export HADOOP_HOME=/usr/local/hadoop/hadoop-3.2.3
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_CLASSPATH=${JAVA_HOME}/lib/tools.jar


//生效
source /etc/profile

配置mapreduce

vi etc/hadoop/mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.application.classpath</name>
        <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
    </property>
</configuration>

配置yarn

vi etc/hadoop/yarn-site.xml

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value>
    </property>
</configuration>

配置相關user

//將sbin/start-dfs.sh,sbin/stop-dfs.sh兩個檔案頂部新增以下引數

HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

//將sbin/start-yarn.sh,sbin/stop-yarn.sh頂部也需新增以下

YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

初始化hdfs

bin/hdfs namenode -format

啟動yarn

sbin/start-yarn.sh

通過jps檢視啟動的程式

 啟動hdfs

sbin/start-dfs.sh

通過jps檢視程式

訪問hadoopui驗證安裝是否成功

http://192.168.43.50:9870/dfshealth.html#tab-overview

 

訪問叢集ui

http://192.168.43.50:8088/cluster/cluster

相關文章