大數(shù)據(jù)分布式計(jì)算--hadoop-創(chuàng)新互聯(lián)

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é)力一起成長(zhǎng),共同發(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

 大數(shù)據(jù)分布式計(jì)算--hadoop

   列出了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 *

大數(shù)據(jù)分布式計(jì)算--hadoop

再介紹下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)程

 大數(shù)據(jù)分布式計(jì)算--hadoop

可看到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

 大數(shù)據(jù)分布式計(jì)算--hadoop

#bin/hadoop fs -ls test          //列出hdfs中test目錄下的文件

大數(shù)據(jù)分布式計(jì)算--hadoop

Web上查看test下的文件

大數(shù)據(jù)分布式計(jì)算--hadoop

下面實(shí)現(xiàn)完全分布式模式

主從機(jī)上都安裝nfs-utils并啟動(dòng)rpcbind服務(wù)(主要是在nfs共享時(shí)候負(fù)責(zé)通知客戶端,服務(wù)器的nfs端口號(hào)的。簡(jiǎn)單理解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連接。

 大數(shù)據(jù)分布式計(jì)算--hadoop

#bin/start-mapred.sh

新增了jobtracker進(jìn)程

大數(shù)據(jù)分布式計(jì)算--hadoop

server8上,jps可看到三個(gè)進(jìn)程jps,datanode,tasktracker

大數(shù)據(jù)分布式計(jì)算--hadoop

從機(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信息

 大數(shù)據(jù)分布式計(jì)算--hadoop

由于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ù)據(jù)分布式計(jì)算--hadoop

注:有時(shí)候操作錯(cuò)誤導(dǎo)致hadoop進(jìn)入安全模式,無法進(jìn)行上傳等操作

大數(shù)據(jù)分布式計(jì)算--hadoop

只需運(yùn)行下行指令即可

#bin/hadoop dfsadmin -safemode leave

大數(shù)據(jù)分布式計(jì)算--hadoop

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的信息

大數(shù)據(jù)分布式計(jì)算--hadoop

可看到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,

大數(shù)據(jù)分布式計(jì)算--hadoop

若要在線刪除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/*

 大數(shù)據(jù)分布式計(jì)算--hadoop

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

 大數(shù)據(jù)分布式計(jì)算--hadoop

#ps -ax 可看到namenode與secondarynamenode進(jìn)程

大數(shù)據(jù)分布式計(jì)算--hadoop

#bin/hdfs dfs -mkdir /user/hadoop

#bin/hdfs dfs -put input/ test

web上可看到input以上傳。

大數(shù)據(jù)分布式計(jì)算--hadoop

MapReduce 的 JobTracker/TaskTracker 機(jī)制需要大規(guī)模的調(diào)整來修復(fù)它在可擴(kuò)展性,內(nèi)存消耗,線程模型,可靠性和性能上的缺陷

為從根本上解決舊 MapReduce 框架的性能瓶頸,促進(jìn) Hadoop 框架的更長(zhǎng)遠(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

 大數(shù)據(jù)分布式計(jì)算--hadoop

server8可看到進(jìn)程已啟動(dòng)

 大數(shù)據(jù)分布式計(jì)算--hadoop

另外有需要云服務(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)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

當(dāng)前標(biāo)題:大數(shù)據(jù)分布式計(jì)算--hadoop-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://muchs.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)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)