目的

創(chuàng)新互聯(lián)公司是專業(yè)的寬甸網(wǎng)站建設(shè)公司,寬甸接單;提供網(wǎng)站建設(shè)、成都網(wǎng)站制作,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行寬甸網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!
本文檔介紹如何去安裝單節(jié)點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無密碼登錄配置
因為本文檔使用root用戶安裝,所以需要配置好root用戶ssh無密碼登錄本地節(jié)點
[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)計出現(xiàn)的次數(shù),最后輸出結(jié)果到 output 文件夾中:
正則表達(dá)式:
[a-z]表示匹配包含在a-z之中的任意一個字符
+ 表示匹配之前的項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 的運行方式是由配置文件決定的(運行 Hadoop時會讀取配置文件),因此如果需要從偽分布式模式切換回非分布式模式,需要刪除 core-site.xml 中的配置項。
(2)偽分布式雖然只需要配置 fs.defaultFS 和 dfs.replication 就可以運行(官方教程如此),不過若沒有配置 hadoop.tmp.dir 參數(shù),則默認(rèn)使用的臨時目錄為 /tmp/hadoo-hadoop,而這個目錄在重啟時有可能被系統(tǒng)清理掉,導(dǎo)致必須重新執(zhí)行 format 才行。所以我們進(jìn)行了設(shè)置,同時也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否則在接下來的步驟中可能會出錯
修改配置文件
Hadoop 可以在單節(jié)點上以偽分布式的方式運行,Hadoop 守護(hù)進(jìn)程以分離的 Java 進(jìn)程來運行,節(jié)點既作為 NameNode 也作為 DataNode,同時,讀取的是 HDFS 中的文件。
Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,偽分布式需要修改2個配置文件 core-site.xml 和 hdfs-site.xml 。Hadoop的配置文件是 xml 格式,每個配置以聲明 property 的 name 和 value 的方式來實現(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
啟動hadoop集群
#NameNode 的格式化:
[root@sht-sgmhadoopdn-01 hadoop]# hdfs namenode -format
#開啟NameNode 和DataNode 守護(hù)進(jìn)程,(這一步會啟動三個進(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)程,(下次啟動hadoop時,無需進(jìn)行NameNode的初始化,只需要運行start-dfs.sh就可以)
[root@sht-sgmhadoopdn-01 hadoop-2.9.0]# /usr/local/hadoop-2.9.0/sbin/stop-dfs.sh
成功啟動進(jìn)程后可以通過瀏覽器訪問,查看 NameNode 和 Datanode 信息,還可以在線查看 HDFS 中的文件:
NameNode http://172.16.101.58:50070
運行hadoop偽分布實例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é)果文件,因此再次運行上面實例會提示出錯: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/
運行YARN在單節(jié)點上
(1)新版的 Hadoop 使用了新的 MapReduce 框架(MapReduce V2,也稱為 YARN,Yet Another Resource Negotiator)。
(2)YARN 是從 MapReduce 中分離出來的,負(fù)責(zé)資源管理與任務(wù)調(diào)度。YARN 運行于 MapReduce 之上,提供了高可用性、高擴(kuò)展性,
上述通過 ./sbin/start-dfs.sh 啟動 Hadoop,僅僅是啟動了 MapReduce 環(huán)境,我們可以啟動 YARN ,讓 YARN 來負(fù)責(zé)資源管理與任務(wù)調(diào)度。
(3)如果不想啟動 YARN,務(wù)必把配置文件 mapred-site.xml 重命名,改成 mapred-site.xml.template,需要用時改回來就行。否則在該配置文件存在,而未開啟 YARN 的情況下,運行程序會提示 “Retrying connect to server: 0.0.0.0/0.0.0.0:8032” 的錯誤,這也是為何該配置文件初始文件名為 mapred-site.xml.template。
(4)但 YARN 主要是為集群提供更好的資源管理與任務(wù)調(diào)度,然而這在單機(jī)上體現(xiàn)不出價值,反而會使程序跑得稍慢些。因此在單機(jī)上是否開啟 YARN 就看實際情況了
[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腳本啟動過
[root@sht-sgmhadoopdn-01 hadoop]# /usr/local/hadoop-2.9.0/sbin/start-yarn.sh
#相比使用MapReduce多了ResourceManager和NodeManager這兩個進(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
#啟動后可以通過瀏覽器訪問:
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
分享文章:安裝hadoop偽分布式模式(SingleNodeCluster)
文章位置:http://chinadenli.net/article44/gghjee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、商城網(wǎng)站、面包屑導(dǎo)航、靜態(tài)網(wǎng)站、網(wǎng)站建設(shè)、小程序開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)