溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Hadoop怎么實(shí)現(xiàn)偽分布模式

發(fā)布時(shí)間:2021-12-09 14:18:01 來源:億速云 閱讀:142 作者:iii 欄目:大數(shù)據(jù)

本篇內(nèi)容介紹了“Hadoop怎么實(shí)現(xiàn)偽分布模式”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

1 偽分布模式

偽分布模式是運(yùn)行在單個(gè)節(jié)點(diǎn)以及多個(gè)Java進(jìn)程上的模式。相比起本地模式,需要進(jìn)行更多配置文件的設(shè)置以及ssh、YARN相關(guān)設(shè)置。

2 Hadoop配置文件

修改Hadoop安裝目錄下的三個(gè)配置文件:

  • etc/hadoop/core-site.xml

  • etc/hadoop/hdfs-site.xml

  • etc/hadoop/hadoop-env.sh

2.1 core-site.xml

首先修改core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
    <property>
    	<name>hadoop.tmp.dir</name>
    	<value>/usr/local/hadoop/tmp</value>
    </property>
</configuration>
  • fs.defaultFS設(shè)置的是HDFS的地址,設(shè)置運(yùn)行在本地的9000端口上

  • hadoop.tmp.dir設(shè)置的是臨時(shí)目錄,如果沒有設(shè)置的話默認(rèn)在/tmp/hadoop-${user.name}中,系統(tǒng)重啟后會(huì)導(dǎo)致數(shù)據(jù)丟失,因此修改這個(gè)臨時(shí)目錄的路徑

接著創(chuàng)建該臨時(shí)目錄:

mkdir -p /usr/local/hadoop/tmp

2.2 hdfs-site.xml

接著修改hdfs-site.xml

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

dfs.replication設(shè)置的是HDFS存儲(chǔ)的臨時(shí)備份數(shù)量,因?yàn)閭畏植寄J街兄挥幸粋€(gè)節(jié)點(diǎn),所以設(shè)置為1

2.3 hadoop-env.sh

修改該文件添加JAVA_HOME環(huán)境變量,就算JAVA_HOME

  • ~/.bashrc

  • ~/.bash_profile

  • /etc/profile

等中設(shè)置了,運(yùn)行時(shí)也是會(huì)提示找不到JAVA_HOME,因此需要手動(dòng)在hadoop-env.sh中設(shè)置JAVA_HOME

Hadoop怎么實(shí)現(xiàn)偽分布模式

3 本地?zé)o密碼ssh連接

下一步需要設(shè)置本地?zé)o密碼ssh連接,首先先檢查確保開啟sshd服務(wù):

systemctl status sshd

開啟后可以直接localhost連接:

ssh localhost

輸入自己的用戶密碼后就可以訪問了,但是這里需要的是無密碼連接,因此配置密鑰認(rèn)證連接的方式:

ssh-keygen -t ed25519 -a 100 
cat ~/.ssh/id_25519.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys

這里生成公私鑰后把公鑰添加到authorized_keys中,并且修改權(quán)限,需要注意600權(quán)限,只能本用戶有寫權(quán)限。

然后直接ssh localhost就可以連接本地主機(jī)了。

4 運(yùn)行

4.1 格式化HDFS

這里以單一節(jié)點(diǎn)的模式運(yùn)行,首先格式化HDFS

# HADOOP為Hadoop安裝目錄
HADOOP/bin/hdfs namenode -format

格式化是對(duì)HDFS中的DataNode進(jìn)行分塊,統(tǒng)計(jì)所有分塊后的初始元數(shù)據(jù),存儲(chǔ)在NameNode中。

格式化成功后會(huì)在上面配置文件中設(shè)置的臨時(shí)目錄中生成dfs目錄,如下所示:

Hadoop怎么實(shí)現(xiàn)偽分布模式

里面只有一個(gè)目錄:dfs/name/current,其中tmp/dfs/name/current的文件如下:

Hadoop怎么實(shí)現(xiàn)偽分布模式

文件說明如下:

  • fsimageNameNode元數(shù)據(jù)在內(nèi)存滿后,持久化保存到的文件

  • fsimage*.md5:校驗(yàn)文件,用于校驗(yàn)fsimage的完整性

  • seen_txid:存放transactionID文件,format之后為0,表示NameNode里面的edits_*文件的尾數(shù)

  • VERSION:保存創(chuàng)建時(shí)間,namespaceIDblockpoolID、storageType、cTime、clusterID、layoutVersion

關(guān)于VERSION的說明:

  • namespaceIDHDFS唯一標(biāo)識(shí)符,在HDFS首次格式化后生成

  • blockpoolID:標(biāo)識(shí)一個(gè)block pool,跨集群全局唯一

  • storageType:存儲(chǔ)什么進(jìn)程的數(shù)據(jù)結(jié)構(gòu)信息

  • cTime:創(chuàng)建時(shí)間

  • clusterID:系統(tǒng)生成或指定的集群ID,可以使用-clusterid指定

  • layoutVersion:表示HDFS永久性數(shù)據(jù)結(jié)構(gòu)版本的信息

4.2 啟動(dòng)NameNode

HADOOP/sbin/start-dfs.sh

然后可以通過

localhost:9870

訪問NameNode

Hadoop怎么實(shí)現(xiàn)偽分布模式

4.3 測試

生成輸入目錄,并使用配置文件作為輸入:

bin/hdfs dfs -mkdir /user
bin/hdfs dfs -mkdir /user/USER_NAME # USER_NAME為您的用戶名
bin/hdfs dfs -mkdir input
bin/hdfs dfs -put etc/hadoop/*.xml input

測試:

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar grep input output 'dfs[a-z.]+'

獲取輸出:

bin/hdfs dfs -get output output # 復(fù)制輸出到output目錄
cat output/*

Hadoop怎么實(shí)現(xiàn)偽分布模式

停止:

sbin/stop-hdfs.sh

5 使用YARN配置

除了可以將單個(gè)節(jié)點(diǎn)以偽分布模式啟動(dòng),還可以通過YARN統(tǒng)一調(diào)度,只需要適當(dāng)修改配置文件。

5.1 配置文件

修改以下文件:

  • HADOOP/etc/hadoop/mapred-site.xml

  • HADOOP/etc/hadoop/yarn-site.xml

5.1.1 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>
  • mapreduce.framework.name指定了MapReduce運(yùn)行在YARN

  • mapreduce.application.classpath指定了類路徑

5.1.2 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_MAPRED_HOME</value>
    </property>
</configuration>
  • yarn.nodemanager.aux-services:運(yùn)行在NodeManager上運(yùn)行的附屬服務(wù)

  • yarn.nodemanager.env-whitelist:環(huán)境變量通過從NodeManagers的容器繼承的環(huán)境屬性

5.2 運(yùn)行

sbin/start-yarn.sh

運(yùn)行后就可以通過

localhost:8088

訪問:

Hadoop怎么實(shí)現(xiàn)偽分布模式

停止:

sbin/stop-yarn.sh

“Hadoop怎么實(shí)現(xiàn)偽分布模式”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI