Hadoop是一個(gè)由Apache基金會(huì)所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)。用戶可以在不了解分布式底層細(xì)節(jié)的情況下,開發(fā)分布式程序。充分利用集群的威力進(jìn)行高速運(yùn)算和存儲(chǔ)。
目前創(chuàng)新互聯(lián)已為上千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站托管維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、隰縣網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。Hadoop 核心項(xiàng)目提供了在低端硬件上構(gòu)建云計(jì)算環(huán)境的基礎(chǔ)服務(wù),它也提供了運(yùn)行在這個(gè)云中的軟件所必須的 API 接口。
Hadoop 內(nèi)核的兩個(gè)基本部分是 MapReduce 框架,也就是云計(jì)算環(huán)境,和 HDFS分布式文件系統(tǒng) 。在 Hadoop 核心框架中,MapReduce 常被稱為 mapred,HDFS 經(jīng)常被稱為 dfs。。HDFS為海量的數(shù)據(jù)提供了存儲(chǔ),MapReduce為海量的數(shù)據(jù)提供了計(jì)算。
MapReduce 的核心概念是把輸入的數(shù)據(jù)分成不同的邏輯塊, Map 任務(wù)首先并行的對(duì)每一塊進(jìn)行單獨(dú)的處理。這些邏輯塊的處理結(jié)果會(huì)被重新組合成不同的排序的集合,這些集合最后由 Reduce 任務(wù)進(jìn)行處理。
HDFS分布式文件系統(tǒng)有高容錯(cuò)性的特點(diǎn),并且設(shè)計(jì)用來部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)來訪問應(yīng)用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集(large data set)的應(yīng)用程序。HDFS放(relax)POSIX的要求,可以以流的形式訪問(streaming access)文件系統(tǒng)中的數(shù)據(jù)。
參考:hadoop.appache.org
實(shí)驗(yàn)環(huán)境rhel6.5
主機(jī)server7,從機(jī)server8.server9 注:各機(jī)都必須域名相互解析。
安裝及基本配置
各機(jī)創(chuàng)建uid為900 的hadoop用戶,密碼為redhat
Server7上,hadoop用戶在/home/下。
#tar zxf hadoop-1.2.1.tar.gz -C hadoop
#cd hadoop
#ln -s hadoop-1.2.1/ hadoop
#sh jdk-6u32-linux-x64.bin //安裝java
#ln -s jdk-1.6.32 java
#vim .bash_profile //配置path
export JAVA_HOME=/home/hadoop/java
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
#source .bash_profile
#echo $JAVA_HOME
顯示/home/hadoop/java
#cd hadoop/conf
#vim hadoop-env.sh
修改exprot JAVA_HOME=/home/hadoop/java
#mkdir ../input
#cp *.xml ../input //創(chuàng)建分布式文件系統(tǒng)
#cd ..
#bin/hadoop jar hadoop-examples-1.2.1.jar
列出了hadoop-example-1.2.1jar對(duì)input操作的相關(guān)參數(shù),如grep查找,sort排序,wordcount計(jì)數(shù)等。
#bin/hadoop jar hadoop-examples-1.2.1.jar grep input output 'dfs[a-z.]+' //查找inout中文件名開頭為dfs后面為小寫英文的文件,將結(jié)果存入自動(dòng)生成的output文件夾中
#cd output/
#ls
#cat *
再介紹下hadoop的三種工作模式
單機(jī)模式(standalone)
單機(jī)模式是Hadoop的默認(rèn)模式,當(dāng)首次解壓Hadoop的源碼包時(shí),Hadoop無法了解硬件安裝環(huán)境,便保守地選擇了最小配置。在這種默認(rèn)模式下所有3個(gè)XML文件均為空。當(dāng)配置文件為空時(shí),Hadoop會(huì)完全運(yùn)行在本地。因?yàn)椴恍枰c其他節(jié)點(diǎn)交互,單機(jī)模式就不使用HDFS,也不加載任何Hadoop的守護(hù)進(jìn)程。該模式主要用于開發(fā)調(diào)試MapReduce程序的應(yīng)用邏輯。
偽分布模式(Pseudo-Distributed Mode)
偽分布模式在“單節(jié)點(diǎn)集群”上運(yùn)行Hadoop,其中所有的守護(hù)進(jìn)程都運(yùn)行在同一臺(tái)機(jī)器上。該模式在單機(jī)模式之上增加了代碼調(diào)試功能,允許你檢查內(nèi)存使用情況,HDFS輸入輸出,以及其他的守護(hù)進(jìn)程交互。
完全分布式模式
Hadoop守護(hù)進(jìn)程運(yùn)行在一個(gè)集群上。
上面的操作為單機(jī)模式。
Hadoop分布式部署
結(jié)構(gòu):
主節(jié)點(diǎn)包括名稱節(jié)點(diǎn)(namenode)、從屬名稱節(jié)點(diǎn)(secondarynamenode)和 jobtracker 守護(hù)進(jìn)程(即所謂的主守護(hù)進(jìn)程)以及管理集群所用的實(shí)用程序和瀏覽器。
從節(jié)點(diǎn)包括 tasktracker 和數(shù)據(jù)節(jié)點(diǎn)(從屬守護(hù)進(jìn)程)。兩種設(shè)置的不同之處在于,主節(jié)點(diǎn)包括提供 Hadoop 集群管理和協(xié)調(diào)的守護(hù)進(jìn)程,而從節(jié)點(diǎn)包括實(shí)現(xiàn)Hadoop 文件系統(tǒng)(HDFS )存儲(chǔ)功能和 MapReduce 功能(數(shù)據(jù)處理功能)的守護(hù)進(jìn)程。
每個(gè)守護(hù)進(jìn)程在 Hadoop 框架中的作用:
namenode 是 Hadoop 中的主服務(wù)器,它管理文件系統(tǒng)名稱空間和對(duì)集群中存儲(chǔ)的文件的訪問。
secondary namenode ,它不是namenode 的冗余守護(hù)進(jìn)程,而是提供周期檢查點(diǎn)和清理任務(wù)。
在每個(gè) Hadoop 集群中可以找到一個(gè) namenode 和一個(gè) secondary namenode。
datanode 管理連接到節(jié)點(diǎn)的存儲(chǔ)(一個(gè)集群中可以有多個(gè)節(jié)點(diǎn))。每個(gè)存儲(chǔ)數(shù)據(jù)的節(jié)點(diǎn)運(yùn)行一個(gè) datanode 守護(hù)進(jìn)程。
每個(gè)集群有一個(gè) jobtracker ,它負(fù)責(zé)調(diào)度 datanode 上的工作。
每個(gè) datanode 有一個(gè)tasktracker,它們執(zhí)行實(shí)際工作。
jobtracker 和 tasktracker 采用主-從形式,jobtracker 調(diào)度datanode 分發(fā)工作,而 tasktracker 執(zhí)行任務(wù)。jobtracker 還檢查請(qǐng)求的工作,如果一個(gè)datanode 由于某種原因失敗,jobtracker 會(huì)重新調(diào)度以前的任務(wù)。
下面實(shí)現(xiàn)偽分布式
為了方便,進(jìn)行ssh免密碼設(shè)置。
Server7上hadoop用戶。
#ssh-keygen
#ssh-copy-id localhost
#ssh localhost //免密碼登陸本機(jī)
修改配置文件:
#cd hadoop/conf
#vim core-site.xml
在<configuration>下面添加
<property>
<name>fs.default.name</name>
<value>hdfs://172.25.0.7:9000</value>
</property> //指定namenode
#vim mapred-site.xml
在<configuration>下面添加
<property>
<name>mapred.job.tracker</name>
<value>172.25.0.7:9001</value>
</property> //指定 jobtracker
#vim hdfs-site.xml
在<configuration>下面添加
<property>
<name>dfs.replication</name>
<value>1</value>
</property> //指定文件保存的副本數(shù),由于是偽分布式所以副本就是本機(jī)1個(gè)。
#cd ..
#bin/hadoop namenode -format //格式化namenode
#bin/start-dfs.sh //啟動(dòng)hdfs
#jps //查看進(jìn)程
可看到secondarynamenode,namenode,datanode都以啟動(dòng)。Namenode與datanode在同一臺(tái)機(jī)器上,所以是偽分布式。
#bin/start-mapred.sh.sh //啟動(dòng)mapreduce
#bin/hadoop fs -put input test //上傳input到hdfs并在hdfs中更名為test
瀏覽 NameNode 和 JobTracker 的網(wǎng)絡(luò)接口,它們的地址默認(rèn)為:
NameNode – http://172.25.0.7:50070/
JobTracker – http://172.25.0.7:50030/
查看namenode
#bin/hadoop fs -ls test //列出hdfs中test目錄下的文件
Web上查看test下的文件
下面實(shí)現(xiàn)完全分布式模式
主從機(jī)上都安裝nfs-utils并啟動(dòng)rpcbind服務(wù)(主要是在nfs共享時(shí)候負(fù)責(zé)通知客戶端,服務(wù)器的nfs端口號(hào)的。簡單理解rpc就是一個(gè)中介服務(wù)),從機(jī)通過nfs直接使用hadoop免去安裝配置。
在server7上,啟動(dòng)nfs服務(wù)
#vim /etc/exports
/home/hadoop *(rw,all_squash,anonuid=900,anongid=900
//共享hadoop,對(duì)登陸用戶指定id,用戶以u(píng)id為900的用戶登陸
server8,9上
#mount 172.25.0.7:/home/hadoop /hooem/hadoop/ //掛載共享目錄
server7上,hadoop用戶,更改hadoop/conf下的hdfs-site,將副本數(shù)由1改為2。
#cd hadoop/conf
#vim slave 添加從機(jī)
172.25.0.8
172.25.0.9
#vim master 設(shè)置主機(jī)
172.25.0.7
啟動(dòng)完全分布式模式前要格式化偽分布式文件系統(tǒng)
#cd ..
#bin/stop-all.sh //停止jobtracker,namenode,secondarynamenode
#bin/hadoop-daemon.sh stop tasktracker
#bin/hadoop-daemon.sh stop datanode //停止tasktracker,datanode,
#bin/hadoop namenode -format
#bin/start-dfs.sh 顯示server8,server9連接。
#bin/start-mapred.sh
新增了jobtracker進(jìn)程
server8上,jps可看到三個(gè)進(jìn)程jps,datanode,tasktracker
從機(jī)可以上傳,查詢等
#bin/hadoop fs -put input test
#bin/hadoop jar hadoop-example-1.2.1.jar grep test out ‘dfs[a-z]+’
server7上,
#bin/hadoop dfsadmin -report //顯示hdfs信息
由于hadoop下未增加文件,所以dfs used%均為0%
#dd if=/dev/zero of=bigfile bs=1M count=200
#bin/hadoop fs -put bigfile test
在web上看到dfs used為403.33MB(兩從機(jī),每個(gè)為200MB)
注:有時(shí)候操作錯(cuò)誤導(dǎo)致hadoop進(jìn)入安全模式,無法進(jìn)行上傳等操作
只需運(yùn)行下行指令即可
#bin/hadoop dfsadmin -safemode leave
hadoop支持實(shí)時(shí)擴(kuò)展,可在線添加從機(jī)。
新增從機(jī)server10。安裝nfs-utils,啟動(dòng)rpcbind服務(wù)。添加uid900的hadoop用戶,掛載server7的hadoop并在hadoop/conf下的slaves添加172.25.0.10。
注:必須在添加server10之前在主從機(jī)上添加server10的hostname解析。
server10上,hadoop用戶
#bin/hadoop-daemon.sh start datanode
#bin/hadoop-daemon.sh start tasktracker
server7上,
#bin/hadoop dfsadmin -report
可看到server10的信息
可看到server10 dfs used為0,可以將server9的數(shù)據(jù)移到server10中。
數(shù)據(jù)遷移:
數(shù)據(jù)遷移是將很少使用或不用的文件移到輔助存儲(chǔ)系統(tǒng)的過程。
hadoop 在線刪除 server9 datanode 節(jié)點(diǎn)可實(shí)現(xiàn)數(shù)據(jù)遷移:
#bin/hadoop-daemon.sh stop tasktracker //在做數(shù)據(jù)遷移時(shí),此節(jié)點(diǎn)不要參與 tasktracker,否則會(huì)出現(xiàn)異常
在 master 上修改 conf/mapred-site.xml
在</property>下面添加
<property>
<name>dfs.hosts.exclude</name>
<value>/home/hadoop/hadoop-1.0.4/conf/datanode-excludes</value>
</property>
在conf下創(chuàng)建datanode-excludes,添加需要?jiǎng)h除的主機(jī),一行一個(gè)
#vim datanode-excludes
172.25.0.9 //刪除節(jié)點(diǎn)server9
#cd ..
#bin/hadoop dfsadmin -refreshNodes //在線刷新節(jié)點(diǎn)
#bin/hadoop dfsadmin -report
可看到server9 狀態(tài):Decommission in progress,
若要在線刪除tasktracker節(jié)點(diǎn)
在server7上修改 conf/mapred-site.xml
<property>
<name>mapred.hosts.exclude</name>
<value>/home/hadoop/hadoop-1.0.4/conf/tasktracker-excludes</value></property>
創(chuàng)建 tasktracker-excludes 文件,并添加需要?jiǎng)h除的主機(jī)名,一行一個(gè)
server9.example.com
#bin/hadoop mradmin -refreshNodes
等此節(jié)點(diǎn)的狀態(tài)顯示為 Decommissioned,數(shù)據(jù)遷移完成,可以安全關(guān)閉了。
hadoop1.2.1版本過低,jobtracker的調(diào)度能力不強(qiáng),當(dāng)slvers過多時(shí)容易成為瓶頸。使用新版本2.6.4是個(gè)不錯(cuò)的選擇。
停掉進(jìn)程,刪除文件:
server7上
#bin/stop-all.sh
#cd /home/hadoop
#rm -fr hadoop java hadoop-1.2.1 java1.6.32
#rm -fr /tmp/*
從機(jī)上
#bin/hadoop-daemon.sh stop datanode
#bin/hadoop-daemon.sh stop tasktracker
#rm -fr /tmp/*
下面操作與上面基本相同
server7上,/home/hadoop/下hadoop用戶
#tar zxf jdk-7u79-linux-x64.tar.gz -C /home/hadoop/
#ln -s jdk1.7.0.79 java
#tar zxf hadoop-2.6.4.tar.gz
#ln -s hadoop-2.6.4 hadoop
#cd hadoop/etc/hadoop
#vim hadoop-env.sh
export JAVA_HOME=/home/hadoop/java
export HADOOP_PREFIX=/home/hadoop/hadoop
#cd /home/hadoop/hadoop
#mkdir input
#cp etc/hadoop/*.xml input
#bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.4.jar grep input output ‘dfs[a-z.]+’
#cat output/*
grep編譯時(shí)會(huì)有warning,當(dāng)集群大時(shí)可能會(huì)出現(xiàn)問題。需要添加hadoop-native。
#tar -xf hadoop-native-64.2.6.0.tar -C hadoop/lib/native/
#bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.4.jar grep input output ‘dfs[a-z.]+’
再編譯沒有warning
#cd etc/hadoop
#vim slaves
172.25.0.8
172.25.0.9
#vim etc/hadoop/core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://172.25.0.7:9000</value>
</property>
#vim hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
#bin/hdfs namenode -format
#sbin/start-dfs.sh
#jps
#ps -ax 可看到namenode與secondarynamenode進(jìn)程
#bin/hdfs dfs -mkdir /user/hadoop
#bin/hdfs dfs -put input/ test
web上可看到input以上傳。
MapReduce 的 JobTracker/TaskTracker 機(jī)制需要大規(guī)模的調(diào)整來修復(fù)它在可擴(kuò)展性,內(nèi)存消耗,線程模型,可靠性和性能上的缺陷
為從根本上解決舊 MapReduce 框架的性能瓶頸,促進(jìn) Hadoop 框架的更長遠(yuǎn)發(fā)展,從 0.23.0 版本開始,Hadoop 的 MapReduce 框架完全重構(gòu),發(fā)生了根本的變化。新的 Hadoop MapReduce 框架命名為 MapReduceV2 或者叫 Yarn
#vim etc/hadoop/yarn-site.xml
< property>
<name>yarn.resourcemanager.hostname</name>
<value>server7.example.com</value>
</property>
#sbin/start-yarn.sh
#jps
server8可看到進(jìn)程已啟動(dòng)
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
當(dāng)前標(biāo)題:大數(shù)據(jù)分布式計(jì)算--hadoop-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://m.rwnh.cn/article8/ddchop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、面包屑導(dǎo)航、網(wǎng)站維護(hù)、網(wǎng)站設(shè)計(jì)、App開發(fā)、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容