Hadoop簡介

我們之前已經解釋過了分布式存儲,分布式存儲有很多的解決方案,其中有個開源程序叫做HDFS,HDFS+MAPREDUCE=hadoop。

hadoop不算是單存的分布式存儲,我們之前提到的Mogilefs和Fastdfs都是分布式存儲。hadoop屬于分布式計算,MAPREDUCE是一個編程的框架,使得程序可以并行計算。

HDFS適用于存儲單個大文件,在存儲中內置塊大小為64M,會將大文件分片存儲,同時也支持存儲海量的文件。

MAPREDUCE就是基于上面存儲的文件進行處理,分析。


上面提到了hadoop是由mapreduce+hdfs組成,因此他也是兩個集群,hdfs分成了一個主節點和N個從節點,從節點主要用于存儲數據,主節點存儲從節點的元數據信息,有點類似于之前介紹的fastdfs由從節點向主節點匯報自己的狀態,存儲的文件等等。mapreduce(hadoop2.0以后)也分為了兩塊,一塊稱為RM(resource manager)一般運行與單個主機上,一塊稱為NM(node manager)運行在每個存儲節點之上,RM負責接收用戶的任務,并將任務發往NM之上,在NM之上又會生成一個AM(application manager),再由AM管理具體任務的執行。


接下來就來簡單配置一個偽分布式的hadoop(因為上述所有進程都運行在一個主機上,因此命名為偽分布式)

下載官網的tar包。

hadoop運行與java虛擬機之上,所以先得去配置java環境

[root@localhost ~]# yum -y install java-1.8.0-openjdk-devel    java-1.8.0-openjdk   

[root@localhost ~]# vi /etc/profile.d/java.sh 
[root@localhost ~]# cat /etc/profile.d/java.sh
export JAVA_HOME=/usr                        #此處指明java目錄即可,hadoop在運行時會自動找java目錄下bin/java
export HADOOP_PREFIX=/usr/local/hadoop-2.7.1 

export PATH=$PATH:${HADOOP_PREFIX}/bin:${HADOOP_PREFIX}/sbin
export HADOOP_YARN_HOME=${HADOOP_PREFIX}
export HADOOP_MAPPERD_HOME=${HADOOP_PREFIX}
export HADOOP_COMMON_HOME=${HADOOP_PREFIX}
export HADOOP_HDFS_HOME=${HADOOP_PREFIX}

配置java以及hadoop配置環境

編輯hadoop目錄中etc/hadoop/core-site.xml文件,添加一下內容。

    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:8020</value>
       <final>true</final>
    </property>

hadoop的配置文件格式name相當于一個指令,value就是指令值。

同目錄下yarn.site.xml添加此段

    <property>
        <name>yarn.resourcemanager.address</name>
        <value>localhost:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>localhost:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>localhost:8031</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
       <value>localhost:8033</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>192.168.20.105:8088</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.auxservices.mapreduce_shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.class</name>
        <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
    </property>

同目錄下hdfs.site.xml添加此段

    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///data/hdfs/nn</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///data/hdfs/dn</value>
    </property>
    <property>
        <name>fs.checkpoint.dir</name>
        <value>file:///data/hdfs/snn</value>
    </property>
    <property>
        <name>fs.checkpoint.edits.dir</name>
        <value>file:///data/hdfs/snn</value>
    </property>

[root@localhost hadoop-2.7.1]# cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
[root@localhost hadoop-2.7.1]# vi etc/hadoop/mapred-site.xml

復制此模板文件,并編輯此文件,添加如下內容

   <property>
       <name>mapreduce.framework.name</name>
       <value>yarn</value>
   </property>

所有配置文件就準備好了,每個配置文件中都有很多參數,具體參數詳情查看以下官方文檔。(網上也有很多別人翻譯好的)

http://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-common/core-default.xml

http://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

http://hadoop.apache.org/docs/r2.7.3/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml

http://hadoop.apache.org/docs/r2.7.3/hadoop-yarn/hadoop-yarn-common/yarn-default.xml

創建配置文件中指定的目錄

[root@localhost sbin]# mkdir /data/hdfs/{nn,sn,dn} -pv

[root@localhost hadoop-2.7.1]# mkdir logs                    #創建日志目錄,日志會保存到這里

[root@localhost hadoop-2.7.1]# hdfs namenode -format            #格式化NN

Hadoop簡介

看到箭頭那行證明格式化成功,接著啟動所有服務

[root@localhost hadoop-2.7.1]# hadoop-daemons.sh  start datanode

[root@localhost hadoop-2.7.1]# hadoop-daemons.sh  start secondarynode

[root@localhost hadoop-2.7.1]# hadoop-daemons.sh  start name

[root@localhost hadoop-2.7.1]# yarn-daemon.sh start resourcemanager
[root@localhost hadoop-2.7.1]# yarn-daemon.sh start nodemanager

啟動服務時回要求輸入密碼,因為默認是通過ssh協議鏈接到個節點的主機上啟動,另外啟動secondary時會報錯提示找不到secondary節點,這里我們不用管它

[root@localhost hadoop-2.7.1]# vi etc/hadoop/hadoop-env.sh              #啟動服務時提示找不到JAVAHOME ,我核實了多遍,發現沒有問題,結果發現這個文件里面定義了一個JAVA_HOME,把他改一下即可

接著可以看到起來了一大堆端口,其中關注最多的應該是

50070:監控存儲節點的web接口

8088:監控運行任務的web接口

其他80的基本是程序員寫程序調用的接口

其他50的基本是hdfs通訊所用到的接口

Hadoop簡介

存儲的狀態界面

Hadoop簡介

運行任務的狀態界面

實際應用中出于安全考慮應該以普通用戶的身份啟動各服務。

有一點沒需求,就當是學習完整理下思路。

原創文章,作者:N24_Ghost,如若轉載,請注明出處:http://www.www58058.com/71067

(1)
N24_GhostN24_Ghost
上一篇 2017-03-13
下一篇 2017-03-13

相關推薦

  • Linux Sysadmin–part3

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現 #!/bin/bash for i in `cut -d’:’ -f7 /etc/passwd`;do if [ $i == “/sbin/nologin…

    2017-09-19
  • CentOS 5和6的啟動流程

    Linux: kernel+rootfs  kernel: 進程管理、內存管理、網絡管理、驅動程序、文件系統、安全功能 rootfs: glibc 庫:函數集合, function, 調用接口 過程調用:procedure 函數調用:function 程序  內核設計流派: 單內核設計:Linux 把所有功能集成于同一個程序; 微內核設計…

    Linux干貨 2016-08-23
  • 認識shell

    一、認識shell 什么是shell?shell為單詞外殼的意思。那么這是誰的外殼?我們知道一個系統中實際工作的是那些硬件,cpu、內存、磁盤等。我們如何調用這些硬件為我們工作?實際上,硬件是由內核kernel控制的。我們可以通過kernel控制硬件,但我們不能直接和內核kernel交流。我們需要一個外殼,這個外殼就是shell來溝通kernel。何為she…

    Linux干貨 2015-09-22
  • 馬哥教育網絡19期+第十四周課程練習

    系統的INPUT和OUTPUT默認策略為DROP; 先把策略設置為DROP # iptables -t filter -P OUTPUT DROP # iptables -t filter -P INPUT DROP 1、限制本地主機的we…

    Linux干貨 2016-08-22
  • ?Linux基礎知識之文件權限

    實驗環境:    Linux系統版本為CentOS6.8_x86_64版本,以root用戶和sjsir用戶遠程用xshell連接系統,進行試驗。 文本目錄:    1.文件的屬性    2.文件權限相關的命令    3.umask 新建文件和目錄的默認權限   &nbs…

    Linux干貨 2016-08-05
  • 進程管理

    linux維護工作中,常常需要對系統上運行的程序進行管理,那么進程管理就顯得相當重要。 進程初識 什么是進程?   進程是并發執行的程序在執行過程中分配和管理資源的基本單位,是一個動態概念。它代表CPU所能處理的單個任務。 什么是線程?   線程是程序流執行的最小單元,可以理解為進程中執行的一段程序片段。 進程與線程聯…

    Linux干貨 2016-09-07

評論列表(1條)

  • 馬哥教育
    馬哥教育 2017-03-30 13:57

    對hadoop的基礎配置描述的非常詳細清晰,繼續加油。

欧美性久久久久