溫馨提示×

溫馨提示×

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

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

安裝hadoop偽分布式模式(Single Node Cluster)

發(fā)布時(shí)間:2020-06-30 09:33:34 來源:網(wǎng)絡(luò) 閱讀:1069 作者:Darren_Chen 欄目:大數(shù)據(jù)

目的

本文檔介紹如何去安裝單節(jié)點(diǎn)hadoop集群,以便你可以的了解和使用hadoop的HDFS和MapReduce.


環(huán)境:

os: CentOS release 6.5 (Final)

ip: 172.16.101.58

user:root

hadoop-2.9.0.tar.gz


SSH無密碼登錄配置

因?yàn)楸疚臋n使用root用戶安裝,所以需要配置好root用戶ssh無密碼登錄本地節(jié)點(diǎn)

[root@sht-sgmhadoopdn-01 ~]#ssh-keygen -t rsa

[root@sht-sgmhadoopdn-01 .ssh]#cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

[root@sht-sgmhadoopdn-01 ~]# ssh localhost


Java安裝和配置

[root@sht-sgmhadoopdn-01 ~]# cd /usr/java

[root@sht-sgmhadoopdn-01 java]# tar xf jdk-8u111-linux-x64.tar.gz

[root@sht-sgmhadoopdn-01 java]# chown -R root:root jdk1.8.0_111/

[root@sht-sgmhadoopdn-01 bin]# /usr/java/jdk1.8.0_111/bin/java -version

java version "1.8.0_111"

[root@sht-sgmhadoopdn-01 ~]# vim ~/.bash_profile

export HADOOP_HOME=/opt/cloudera/parcels/CDH/lib/hadoop

export JAVA_HOME=/usr/java/jdk1.8.0_111

export PATH=$JAVA_HOME/bin:$PATH:$HOME/bin

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export LD_LIBRARY_PATH=/home/bduser/hadoop/hadoop-2.7.3/lib/native/:$LD_LIBRARY_PATH

[root@sht-sgmhadoopdn-01 ~]# source .bash_profile

[root@sht-sgmhadoopdn-01 ~]# which java

/usr/java/jdk1.8.0_111/bin/java


下載和解壓hadoop

[root@sht-sgmhadoopdn-01 local]# wget http://www-us.apache.org/dist/hadoop/common/hadoop-2.9.0/hadoop-2.9.0.tar.gz

[root@sht-sgmhadoopdn-01 local]# tar xf hadoop-2.9.0.tar.gz

[root@sht-sgmhadoopdn-01 ~]#vim .bash_profile

export HADOOP_HOME=/usr/local/hadoop-2.9.0

export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$JAVA_HOME/bin:$PATH

[root@sht-sgmhadoopdn-01 ~]# source .bash_profile

[root@sht-sgmhadoopdn-01 ~]# which hadoop

/usr/local/hadoop-2.9.0/bin/hadoop

[root@sht-sgmhadoopdn-01 local]# hadoop version

Hadoop 2.9.0

......


hadoop jar命令解析

jar <jar>  run a jar file,如果是yarn,則需要使用hadoop yarn jar

將 input 文件夾中的所有文件作為輸入,篩選當(dāng)中符合正則表達(dá)式 dfs[a-z.]+ 的單詞并統(tǒng)計(jì)出現(xiàn)的次數(shù),最后輸出結(jié)果到 output 文件夾中:

正則表達(dá)式:

[a-z]表示匹配包含在a-z之中的任意一個(gè)字符

+ 表示匹配之前的項(xiàng)1次或者多次

[root@sht-sgmhadoopdn-01 ~]# cd /usr/local/hadoop-2.9.0

[root@sht-sgmhadoopdn-01 hadoop-2.9.0]# cp etc/hadoop/*.xml  input/

[root@sht-sgmhadoopdn-01 hadoop-2.9.0]# hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.0.jar grep input output 'dfs[a-z.]+'

[root@sht-sgmhadoopdn-01 hadoop-2.9.0]# cat output/*

1dfsadmin


Hadoop配置文件說明

(1)Hadoop 的運(yùn)行方式是由配置文件決定的(運(yùn)行 Hadoop時(shí)會讀取配置文件),因此如果需要從偽分布式模式切換回非分布式模式,需要?jiǎng)h除 core-site.xml 中的配置項(xiàng)。

(2)偽分布式雖然只需要配置 fs.defaultFS 和 dfs.replication 就可以運(yùn)行(官方教程如此),不過若沒有配置 hadoop.tmp.dir 參數(shù),則默認(rèn)使用的臨時(shí)目錄為 /tmp/hadoo-hadoop,而這個(gè)目錄在重啟時(shí)有可能被系統(tǒng)清理掉,導(dǎo)致必須重新執(zhí)行 format 才行。所以我們進(jìn)行了設(shè)置,同時(shí)也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否則在接下來的步驟中可能會出錯(cuò)


修改配置文件

Hadoop 可以在單節(jié)點(diǎn)上以偽分布式的方式運(yùn)行,Hadoop 守護(hù)進(jìn)程以分離的 Java 進(jìn)程來運(yùn)行,節(jié)點(diǎn)既作為 NameNode 也作為 DataNode,同時(shí),讀取的是 HDFS 中的文件。

Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,偽分布式需要修改2個(gè)配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop的配置文件是 xml 格式,每個(gè)配置以聲明 property 的 name 和 value 的方式來實(shí)現(xiàn)。

[root@sht-sgmhadoopdn-01 hadoop]#cat /usr/local/hadoop-2.9.0/etc/hadoop/core-site.xml

<configuration>

<property>

<name>hadoop.tmp.dir</name>

<value>/usr/local/hadoop-2.9.0/tmp</value>

<description>Abase for other temporary directories.</description>

<property>

<property>

<name>fs.defaultFS</name>

<value>hdfs://localhost:9000</value>

</property>

</configuration>


[root@sht-sgmhadoopdn-01 hadoop]#cat /usr/local/hadoop-2.9.0/etc/hadoop/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-2.9.0/tmp/dfs/name</value>

</property>

<property>

<name>dfs.datanode.data.dir</name>

<value>file:/usr/local/hadoop-2.9.0/tmp/dfs/data</value>

</property>

</configuration>


[root@sht-sgmhadoopdn-01 hadoop]# vim /usr/local/hadoop-2.9.0/etc/hadoop/hadoop-env.sh

#export JAVA_HOME=${JAVA_HOME}

export JAVA_HOME=/usr/java/jdk1.8.0_111


啟動(dòng)hadoop集群

#NameNode 的格式化:

[root@sht-sgmhadoopdn-01 hadoop]# hdfs namenode -format


#開啟NameNode 和DataNode 守護(hù)進(jìn)程,(這一步會啟動(dòng)三個(gè)進(jìn)程,分別是namenode,datanode,secondarynamenode)

[root@sht-sgmhadoopdn-01 hadoop]# /usr/local/hadoop-2.9.0/sbin/start-dfs.sh


#通過jps命令查看進(jìn)程號和進(jìn)程名稱

[root@sht-sgmhadoopdn-01 logs]# jps

12704 DataNode

14273 Jps

12580 NameNode

27988 -- process information unavailable

13015 SecondaryNameNode

27832 -- process information unavailable


#也可以通過stop-dfs.sh停止守護(hù)進(jìn)程,(下次啟動(dòng)hadoop時(shí),無需進(jìn)行NameNode的初始化,只需要運(yùn)行start-dfs.sh就可以)

[root@sht-sgmhadoopdn-01 hadoop-2.9.0]# /usr/local/hadoop-2.9.0/sbin/stop-dfs.sh


成功啟動(dòng)進(jìn)程后可以通過瀏覽器訪問,查看 NameNode 和 Datanode 信息,還可以在線查看 HDFS 中的文件:

NameNode http://172.16.101.58:50070


運(yùn)行hadoop偽分布實(shí)例MapReduce Job

#創(chuàng)建hdfs目錄/user/root/input,并把本地的文件拷貝到hdfs上

[root@sht-sgmhadoopdn-01 hadoop-2.9.0]# hdfs dfs -mkdir -p /user/root/input

[root@sht-sgmhadoopdn-01 ~]# hdfs dfs -ls

drwxr-xr-x   - root supergroup          0 2017-12-24 15:20 input

[root@sht-sgmhadoopdn-01 hadoop-2.9.0]# hdfs dfs -put /usr/local/hadoop-2.9.0/etc/hadoop/*.xml /user/root/input

[root@sht-sgmhadoopdn-01 hadoop-2.9.0]# hdfs dfs -ls /user/root/input

Found 8 items

-rw-r--r-- 1 root supergroup 7861 2017-12-24 15:20 /user/root/input/capacity-scheduler.xml

-rw-r--r-- 1 root supergroup 1040 2017-12-24 15:20 /user/root/input/core-site.xml

-rw-r--r-- 1 root supergroup 10206 2017-12-24 15:20 /user/root/input/hadoop-policy.xml

-rw-r--r-- 1 root supergroup 1091 2017-12-24 15:20 /user/root/input/hdfs-site.xml

-rw-r--r-- 1 root supergroup 620 2017-12-24 15:20 /user/root/input/httpfs-site.xml

-rw-r--r-- 1 root supergroup 3518 2017-12-24 15:20 /user/root/input/kms-acls.xml

-rw-r--r-- 1 root supergroup 5939 2017-12-24 15:20 /user/root/input/kms-site.xml

-rw-r--r-- 1 root supergroup 690 2017-12-24 15:20 /user/root/input/yarn-site.xml


[root@sht-sgmhadoopdn-01 hadoop-2.9.0]# hadoop jar /usr/local/hadoop-2.9.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.0.jar grep input output 'dfs[a-z]+'


[root@sht-sgmhadoopdn-01 hadoop-2.9.0]# hdfs dfs -cat output/*

1dfsadmin


#默認(rèn)不會覆蓋結(jié)果文件,因此再次運(yùn)行上面實(shí)例會提示出錯(cuò):hdfs://localhost:9000/user/root/output already exists,需要先將output 刪除。

[root@sht-sgmhadoopdn-01 hadoop-2.9.0]# hdfs dfs -rm -r /user/root/output

Deleted /user/root/output


[root@sht-sgmhadoopdn-01 hadoop-2.9.0]# hadoop jar /usr/local/hadoop-2.9.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.0.jar grep input output 'dfs[a-z.]+'


[root@sht-sgmhadoopdn-01 hadoop-2.9.0]# hdfs dfs -cat output/*

1dfsadmin

1dfs.replication

1dfs.namenode.name.dir

1dfs.datanode.data.dir

#也可以從hdfs上拷貝文件到本地


[root@sht-sgmhadoopdn-01 hadoop-2.9.0]# hdfs dfs -get /user/root/output /usr/local/hadoop-2.9.0/


運(yùn)行YARN在單節(jié)點(diǎn)上

(1)新版的 Hadoop 使用了新的 MapReduce 框架(MapReduce V2,也稱為 YARN,Yet Another Resource Negotiator)。

(2)YARN 是從 MapReduce 中分離出來的,負(fù)責(zé)資源管理與任務(wù)調(diào)度。YARN 運(yùn)行于 MapReduce 之上,提供了高可用性、高擴(kuò)展性,

上述通過 ./sbin/start-dfs.sh 啟動(dòng) Hadoop,僅僅是啟動(dòng)了 MapReduce 環(huán)境,我們可以啟動(dòng) YARN ,讓 YARN 來負(fù)責(zé)資源管理與任務(wù)調(diào)度。

(3)如果不想啟動(dòng) YARN,務(wù)必把配置文件 mapred-site.xml 重命名,改成 mapred-site.xml.template,需要用時(shí)改回來就行。否則在該配置文件存在,而未開啟 YARN 的情況下,運(yùn)行程序會提示 “Retrying connect to server: 0.0.0.0/0.0.0.0:8032” 的錯(cuò)誤,這也是為何該配置文件初始文件名為 mapred-site.xml.template。

(4)但 YARN 主要是為集群提供更好的資源管理與任務(wù)調(diào)度,然而這在單機(jī)上體現(xiàn)不出價(jià)值,反而會使程序跑得稍慢些。因此在單機(jī)上是否開啟 YARN 就看實(shí)際情況了

[root@sht-sgmhadoopdn-01 hadoop]# mv  /usr/local/hadoop-2.9.0/etc/hadoop/mapred-site.xml.template mapred-site.xml

[root@sht-sgmhadoopdn-01 hadoop]# cat mapred-site.xml

<configuration>

    <property>

    <name>yarn.nodemanager.aux-services</name>

    <value>mapreduce_shuffle</value>

    </property>

</configuration>


[root@sht-sgmhadoopdn-01 hadoop]# cat yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->

    <property>

        <name>yarn.nodemanager.aux-services</name>

        <value>mapreduce_shuffle</value>

    </property>

</configuration>


[root@sht-sgmhadoopdn-01 hadoop]# jps

27988 -- process information unavailable

30341 DataNode

32663 Jps

27832 -- process information unavailable

30188 NameNode

30525 SecondaryNameNode


#前提是已經(jīng)使用start-dfs.sh腳本啟動(dòng)過

[root@sht-sgmhadoopdn-01 hadoop]# /usr/local/hadoop-2.9.0/sbin/start-yarn.sh


#相比使用MapReduce多了ResourceManager和NodeManager這兩個(gè)進(jìn)程

[root@sht-sgmhadoopdn-01 hadoop]# jps

27988 -- process information unavailable

30341 DataNode

32758 ResourceManager

855 Jps

27832 -- process information unavailable

411 NodeManager

30188 NameNode

30525 SecondaryNameNode


#啟動(dòng)后可以通過瀏覽器訪問:

ResourceManager - http://172.16.101.58:8088


停止hadoop集群

[root@sht-sgmhadoopdn-01 hadoop]# /usr/local/hadoop-2.9.0/sbin/stop-yarn.sh

[root@sht-sgmhadoopdn-01 hadoop]#/usr/local/hadoop-2.9.0/sbin/stop-dfs.sh

[root@sht-sgmhadoopdn-01 hadoop]# /usr/local/hadoop-2.9.0/sbin/mr-jobhistory-daemon.sh stop historyserver

no historyserver to stop


參考鏈接:

http://www.powerxing.com/install-hadoop/

http://hadoop.apache.org/docs/r2.9.0/hadoop-project-dist/hadoop-common/SingleCluster.html



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

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

AI