初識Hadoop一,配置及啟動服務


一、Hadoop簡介:

  Hadoop是由Apache基金會所開發的分布式系統基礎架構,實現了一個分布式文件系統(Hadoop Distributed File System),簡稱HDFS;Hadoop框架最核心設計就是HDFS和MapReduce,HDFS為海量數據提供了存儲,MapReduce為海量數據提供了計算。

  Hadoop要解決的問題:海量數據的存儲(HDFS)、海量數據的分析(MapReduce)和資源管理調度(YARN)

  Hadoop主要作用於分布式

二、Hadoop實現機制

  1、Hadoop是把一個文件切割成多個塊(block),分別存儲到不同服務器上,而且其中某些服務器又存有這個文件的多個塊,如下圖把文件A分成4塊(A1\A2\A3\A4)存放在4個服務器上;這樣不僅解決了並發請求一個文件時造成的阻塞,增大吞吐量,還做了副本備份

    
  2、Hadoop分布式部署服務器,那就分主服務器和輔服務器。主服務器也就是NameNode,存儲文件分塊的相關信息,如哪個塊在哪個服務器哪個路徑下,而真正存儲文件的是輔服務器,即DataNode。客戶端請求文件時無需關心如何請求塊,只需要知道HDFS為文件虛擬的一個文件路徑即可,也就是直接請求NameNode。

  3、Hadoop只有一個NameNode,可以有多個DataNode,當DataNode不夠用時還可以添加

三、Hadoop安裝、配置及啟動(CentOS7系統)

  1、官網下載Hadoop  hadoop-2.7.3.tar.gz

  2、需要的軟件環境JDK、SSH、rsync;JDK安裝和部署參照本博文linux學習之系統管理、網絡配置、軟件安裝第九步;ssh、rsync安裝直接用yum install安裝,一般這兩個系統自帶

  2、在/home下新建文件夾hadoop,然后通過FlashFXP工具將下載好的hadoop壓縮包上傳至此文件夾下,使用tar命令解壓

  3、在解壓后的文件下修改配置

    (1)、設置JAVA_HOME環境變量(我的JDK安裝目錄為/home/jdk/jdk1.8.0_73/)

      vi命令編輯etc/hadoop/hadoop-env.sh,找到相應位置修改如下:

      # The java implementation to use.

      #export JAVA_HOME=${JAVA_HOME}

      export JAVA_HOME=/home/jdk/jdk1.8.0_73

    (2)、編輯文件etc/hadoop/core-site.xml文件,指定默認文件系統和工作空間(現在還路徑下還沒有tmp文件夾,執行完hdfs格式化后便可看到相關文件)

      <configuration>

        <property>
          <name>fs.defaultFS</name>
          <value>hdfs://localhost:9000</value>
        </property>

        <property>
          <name>hadoop.tmp.dir</name>
          <value>/home/hadoop/hadoop-2.7.3/tmp/</value>
        </property>

      </configuration>

    (3)、編輯文件etc/hadoop/hdfs-site.xml文件,設置文件副本數,也就是文件分割成塊后,要復制塊個數(由於此處就本機一個節點,偽分布式,所以就配置為1,文件本身,不需要副本)

      <configuration>

        <property>
          <name>dfs.replication</name>
          <value>1</value>
        </property>

      </configuration>

    (4)、編輯文件etc/hadoop/mapred-site.xml文件,此文件其實不存在,二存在mapred-site.xml.template,所以執行命令mv mapred-site.xml.template mapred-site.xml修改此文件名,指定資源調度框架

      <configuration>

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

      </configuration>

    (5)、編輯文件etc/hadoop/yarn-site.xml文件,yarn也是分布式管理的,所以配置一個主服務器;然后還要配置中間數據調度的機制

      <configuration>

        <property>
          <name>yarn.resourcemanager.hostname</name>
          <value>localhost</value>
        </property>

        <property>
          <name>yarn.nodemanager.aux-services</name>
          <value>mapreduce_shuffle</value>
        </property>

      </configuration>

  4、配置完成后,格式化hdfs系統

    hadoop命令一般在bin文件夾下,所以要執行相關命令要在bin目錄下進行操作,為了以后方便,所以要先把hadoop的bin目錄配置到環境變量中,還有些命令在sbin目錄中,所以也要配置到環境變量

    vi /etc/profile環境變量部分代碼如下

    export JAVA_HOME=/home/jdk/jdk1.8.0_73
    export HADOOP_HOME=/home/hadoop/hadoop-2.7.3/
    export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

    保存后記得用命令source /etc/profile配置立即生效

    (執行前可以看下hadoop安裝目錄下不存在tmp文件夾)然后執行hadoop namenode -format命令,會發現以前hadoop安裝路徑下不存在tmp文件夾,現在已經有了

  5、啟動HDFS(sbin下有start-dfs.sh)

    HDFS是分布式系統,所以啟動HDFS時,會啟動配置的各個服務器節點,包括本機,在啟動過程中是通過ssh遠程操作的,所以在不做特殊配置下,每次啟動到節點(包括本機)相關操作時,都要輸入密碼,如果想避免每次都輸入密碼,可執行下面命令

     ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
      cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
      chmod 0600 ~/.ssh/authorized_keys   
 執行start-dfs.sh啟動HDFS(由於配置了環境變量,所以可以直接執行,不用切換到sbin目錄下)

    啟動完后jps命令可以查看正在啟動的java服務
  

    [root@localhost bin]# jps
    28800 SecondaryNameNode
    28619 DataNode
    28524 NameNode
    29068 Jps
    [root@localhost bin]#

    netstat -nltp命令查看所監聽的端口

    

[root@localhost bin]# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:50090 0.0.0.0:* LISTEN 28800/java
tcp 0 0 192.168.36.133:1521 0.0.0.0:* LISTEN 2485/tnslsnr
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 2397/dnsmasq
tcp 0 0 0.0.0.0:50070 0.0.0.0:* LISTEN 28524/java
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1080/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1084/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2263/master
tcp 0 0 0.0.0.0:50010 0.0.0.0:* LISTEN 28619/java
tcp 0 0 0.0.0.0:50075 0.0.0.0:* LISTEN 28619/java
tcp 0 0 127.0.0.1:38242 0.0.0.0:* LISTEN 28619/java
tcp 0 0 0.0.0.0:50020 0.0.0.0:* LISTEN 28619/java
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 28524/java
tcp6 0 0 :::22 :::* LISTEN 1080/sshd
tcp6 0 0 ::1:631 :::* LISTEN 1084/cupsd
tcp6 0 0 :::23 :::* LISTEN 1087/xinetd
tcp6 0 0 ::1:25 :::* LISTEN 2263/master
tcp6 0 0 :::36794 :::* LISTEN 2558/ora_d000_orcl
[root@localhost bin]#

    NameNode和DataNode是通過9000端口通信的

    50070端口是提供的一個Web頁面,我的系統ip是192.168.36.133,訪問網址http://192.168.36.133:50070/可查看效果

  6、啟動yarn(yarn也是集群的)

  執行start-yarn.sh命令(在sbin文件夾下),如果前面沒有配置ssh免登錄,也是要輸入登錄密碼的。執行jps命令查看啟動的Java服務,ResourceManager已啟動

[root@localhost home]# jps
4080 Jps
3121 DataNode
3320 SecondaryNameNode
3672 ResourceManager
3768 NodeManager
3021 NameNode
[root@localhost home]#

 到此已經配置啟動完了,下一節開始使用

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM