中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

大數據分布式計算--hadoop

發布時間:2020-06-22 09:36:11 來源:網絡 閱讀:753 作者:yi003958 欄目:大數據

 

Hadoop是一個由Apache基金會所開發的分布式系統基礎架構。用戶可以在不了解分布式底層細節的情況下,開發分布式程序。充分利用集群的威力進行高速運算和存儲。

Hadoop 核心項目提供了在低端硬件上構建云計算環境的基礎服務,它也提供了運行在這個云中的軟件所必須的 API 接口。  

Hadoop 內核的兩個基本部分是 MapReduce 框架,也就是云計算環境,和 HDFS分布式文件系統 。在 Hadoop 核心框架中,MapReduce 常被稱為 mapred,HDFS 經常被稱為 dfs。。HDFS為海量的數據提供了存儲,MapReduce為海量的數據提供了計算。

MapReduce 的核心概念是把輸入的數據分成不同的邏輯塊, Map 任務首先并行的對每一塊進行單獨的處理。這些邏輯塊的處理結果會被重新組合成不同的排序的集合,這些集合最后由 Reduce 任務進行處理。

HDFS分布式文件系統有高容錯性的特點,并且設計用來部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)來訪問應用程序的數據,適合那些有著超大數據集(large data set)的應用程序。HDFS放(relaxPOSIX的要求,可以以流的形式訪問(streaming access)文件系統中的數據。

                                                                                                                    參考:hadoop.appache.org

 

實驗環境rhel6.5

主機server7,從機server8.server9  注:各機都必須域名相互解析。

 

安裝及基本配置

各機創建uid900 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     //創建分布式文件系統

#cd ..

#bin/hadoop jar hadoop-examples-1.2.1.jar 

 大數據分布式計算--hadoop

 

   列出了hadoop-example-1.2.1jarinput操作的相關參數,如grep查找,sort排序,wordcount計數等。

#bin/hadoop jar hadoop-examples-1.2.1.jar grep input output 'dfs[a-z.]+'   //查找inout中文件名開頭為dfs后面為小寫英文的文件,將結果存入自動生成的output文件夾中

#cd output/

#ls

#cat *

大數據分布式計算--hadoop

 

再介紹下hadoop的三種工作模式

單機模式(standalone

         單機模式是Hadoop的默認模式,當首次解壓Hadoop的源碼包時,Hadoop無法了解硬件安裝環境,便保守地選擇了最小配置。在這種默認模式下所有3XML文件均為空。當配置文件為空時,Hadoop會完全運行在本地。因為不需要與其他節點交互,單機模式就不使用HDFS,也不加載任何Hadoop的守護進程。該模式主要用于開發調試MapReduce程序的應用邏輯。

偽分布模式(Pseudo-Distributed Mode

        偽分布模式在“單節點集群”上運行Hadoop,其中所有的守護進程都運行在同一臺機器上。該模式在單機模式之上增加了代碼調試功能,允許你檢查內存使用情況,HDFS輸入輸出,以及其他的守護進程交互。

完全分布式模式

        Hadoop守護進程運行在一個集群上。


上面的操作為單機模式。


Hadoop分布式部署

結構:

    主節點包括名稱節點(namenode)、從屬名稱節點(secondarynamenode)和 jobtracker 守護進程(即所謂的主守護進程)以及管理集群所用的實用程序和瀏覽器。

   從節點包括 tasktracker 和數據節點(從屬守護進程)。兩種設置的不同之處在于,主節點包括提供 Hadoop 集群管理和協調的守護進程,而從節點包括實現Hadoop 文件系統(HDFS )存儲功能和 MapReduce 功能(數據處理功能)的守護進程。

 

每個守護進程在 Hadoop 框架中的作用:

namenode 是 Hadoop 中的主服務器,它管理文件系統名稱空間和對集群中存儲的文件的訪問。

secondary namenode ,它不是namenode 的冗余守護進程,而是提供周期檢查點和清理任務。

在每個 Hadoop 集群中可以找到一個 namenode 和一個 secondary namenode

datanode 管理連接到節點的存儲(一個集群中可以有多個節點)。每個存儲數據的節點運行一個 datanode 守護進程。

每個集群有一個 jobtracker ,它負責調度 datanode 上的工作。

每個 datanode 有一個tasktracker,它們執行實際工作。

jobtracker 和 tasktracker 采用主-從形式,jobtracker 調度datanode 分發工作,而 tasktracker 執行任務。jobtracker 還檢查請求的工作,如果一個datanode 由于某種原因失敗,jobtracker 會重新調度以前的任務。

 

下面實現偽分布式

 

為了方便,進行ssh免密碼設置。

Server7hadoop用戶。

#ssh-keygen

#ssh-copy-id localhost

#ssh localhost     //免密碼登陸本機

修改配置文件:

#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>    //指定文件保存的副本數,由于是偽分布式所以副本就是本機1個。

 

#cd ..

#bin/hadoop namenode -format      //格式化namenode

#bin/start-dfs.sh             //啟動hdfs

#jps    //查看進程

 大數據分布式計算--hadoop

 

可看到secondarynamenodenamenode,datanode都以啟動。Namenodedatanode在同一臺機器上,所以是偽分布式。

#bin/start-mapred.sh.sh        //啟動mapreduce 

#bin/hadoop fs -put input test     //上傳inputhdfs并在hdfs中更名為test


瀏覽 NameNode 和 JobTracker 的網絡接口,它們的地址默認為:

NameNode – http://172.25.0.7:50070/

JobTracker – http://172.25.0.7:50030/

查看namenode

 大數據分布式計算--hadoop

 

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

大數據分布式計算--hadoop  

 

Web上查看test下的文件

大數據分布式計算--hadoop

  

 

下面實現完全分布式模式

 

主從機上都安裝nfs-utils并啟動rpcbind服務(主要是在nfs共享時候負責通知客戶端,服務器的nfs端口號的。簡單理解rpc就是一個中介服務),從機通過nfs直接使用hadoop免去安裝配置。

 

server7上,啟動nfs服務

#vim /etc/exports

/home/hadoop  *(rw,all_squash,anonuid=900,anongid=900

                 //共享hadoop,對登陸用戶指定id,用戶以uid900的用戶登陸

 

server89

#mount 172.25.0.7:/home/hadoop /hooem/hadoop/      //掛載共享目錄

server7上,hadoop用戶,更改hadoop/conf下的hdfs-site,將副本數由1改為2

#cd  hadoop/conf

#vim slave  添加從機

  172.25.0.8

  172.25.0.9

 

#vim master  設置主機

  172.25.0.7

 

啟動完全分布式模式前要格式化偽分布式文件系統

#cd ..

#bin/stop-all.sh     //停止jobtracker,namenode,secondarynamenode

#bin/hadoop-daemon.sh stop tasktracker

#bin/hadoop-daemon.sh stop datanode     //停止tasktrackerdatanode

#bin/hadoop namenode -format

#bin/start-dfs.sh    顯示server8server9連接。

 大數據分布式計算--hadoop

 

#bin/start-mapred.sh

新增了jobtracker進程

大數據分布式計算--hadoop


server8上,jps可看到三個進程jpsdatanode,tasktracker

大數據分布式計算--hadoop

  

從機可以上傳,查詢等

#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

由于hadoop下未增加文件,所以dfs used%均為0%

#dd if=/dev/zero of=bigfile bs=1M count=200

#bin/hadoop fs -put bigfile test

 

web上看到dfs used403.33MB(兩從機,每個為200MB

大數據分布式計算--hadoop

  

注:有時候操作錯誤導致hadoop進入安全模式,無法進行上傳等操作

大數據分布式計算--hadoop

 

只需運行下行指令即可

#bin/hadoop dfsadmin -safemode leave

大數據分布式計算--hadoop  

 


hadoop支持實時擴展,可在線添加從機。

 


新增從機server10。安裝nfs-utils,啟動rpcbind服務。添加uid900hadoop用戶,掛載server7hadoop并在hadoop/conf下的slaves添加172.25.0.10

       注:必須在添加server10之前在主從機上添加server10hostname解析。


server10上,hadoop用戶

#bin/hadoop-daemon.sh start datanode

#bin/hadoop-daemon.sh start tasktracker

 

server7上,

#bin/hadoop dfsadmin -report 

可看到server10的信息

大數據分布式計算--hadoop

 

 

可看到server10 dfs used0,可以將server9的數據移到server10中。

數據遷移:

數據遷移是將很少使用或不用的文件移到輔助存儲系統的過程。

 

hadoop 在線刪除 server9 datanode 節點可實現數據遷移:

#bin/hadoop-daemon.sh stop tasktracker  //在做數據遷移時,此節點不要參與 tasktracker,否則會出現異常

  在 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下創建datanode-excludes,添加需要刪除的主機,一行一個

#vim datanode-excludes  

172.25.0.9   //刪除節點server9

#cd ..

#bin/hadoop dfsadmin -refreshNodes    //在線刷新節點

#bin/hadoop dfsadmin -report 

可看到server9 狀態:Decommission in progress

大數據分布式計算--hadoop

 

若要在線刪除tasktracker節點

server7上修改 conf/mapred-site.xml

<property>

        <name>mapred.hosts.exclude</name>

        <value>/home/hadoop/hadoop-1.0.4/conf/tasktracker-excludes</value></property>

創建 tasktracker-excludes 文件,并添加需要刪除的主機名,一行一個

server9.example.com

#bin/hadoop mradmin -refreshNodes

 


等此節點的狀態顯示為 Decommissioned,數據遷移完成,可以安全關閉了。

 

hadoop1.2.1版本過低,jobtracker的調度能力不強,當slvers過多時容易成為瓶頸。使用新版本2.6.4是個不錯的選擇。

停掉進程,刪除文件:

server7

#bin/stop-all.sh

#cd /home/hadoop

#rm -fr hadoop java hadoop-1.2.1 java1.6.32

#rm -fr /tmp/*

從機上

#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/*

 大數據分布式計算--hadoop

 

grep編譯時會有warning,當集群大時可能會出現問題。需要添加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

 大數據分布式計算--hadoop

 

#ps -ax 可看到namenodesecondarynamenode進程

大數據分布式計算--hadoop

 

#bin/hdfs dfs -mkdir /user/hadoop

#bin/hdfs dfs -put input/ test

web上可看到input以上傳。

大數據分布式計算--hadoop

 

MapReduce 的 JobTracker/TaskTracker 機制需要大規模的調整來修復它在可擴展性,內存消耗,線程模型,可靠性和性能上的缺陷

為從根本上解決舊 MapReduce 框架的性能瓶頸,促進 Hadoop 框架的更長遠發展,從 0.23.0 版本開始,Hadoop 的 MapReduce 框架完全重構,發生了根本的變化。新的 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

 大數據分布式計算--hadoop

 

server8可看到進程已啟動

 大數據分布式計算--hadoop

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乌海市| 纳雍县| 重庆市| 惠州市| 读书| 建湖县| 临武县| 和硕县| 绵阳市| 武宣县| 石门县| 全椒县| 朔州市| 嵩明县| 民丰县| 诏安县| 灵石县| 顺义区| 日喀则市| 旺苍县| 晋城| 江源县| 宝应县| 汉寿县| 治县。| 色达县| 玛多县| 紫阳县| 聂荣县| 什邡市| 滨海县| 通州区| 华容县| 星子县| 和平区| 梧州市| 海宁市| 油尖旺区| 仁寿县| 天台县| 紫阳县|