1. 程式人生 > >Hadoop叢集的安裝與配置

Hadoop叢集的安裝與配置

一.準備Linux環境(虛擬機器)

  1.先將虛擬機器的網路模式選為NAT

  2.修改主機名

  vi /etc/sysconfig/network      

      NETWORKING=yes
      HOSTNAME=hdp-node-01

  3.修改IP

    vim /etc/sysconfig/network-scripts/ifcfg-eth0

    

       DEVICE="eth0"
    BOOTPROTO="static" ###
    HWADDR="00:0C:29:3C:BF:E7"
    IPV6INIT="yes"
    NM_CONTROLLED="yes"
    ONBOOT="yes"
    TYPE="Ethernet"
    UUID="ce22eeca-ecde-4536-8cc2-ef0dc36d4a8c"
    IPADDR="192.168.1.101" ###
    NETMASK="255.255.255.0" ###
    GATEWAY="192.168.1.101" ###

  4.修改主機名和IP的對映關係

    vim /etc/hosts    

       192.168.1.101  hdp-node-01

    192.168.1.102  hdp-node-02

    192.168.1.103  hdp-node-03

  5.關閉防火牆

    #檢視防火牆狀態

    service iptables status
    #關閉防火牆
    service iptables stop
    #檢視防火牆開機啟動狀態
    chkconfig iptables --list
    #關閉防火牆開機啟動
    chkconfig iptables off

  6.重啟Linux  

    reboot

 

二.安裝JDK

  1.上傳alt+p 後出現sftp視窗,然後put d:\xxx\yy\ll\jdk1.7.tar.gz  

  2.解壓jdk
    #建立資料夾
    mkdir /home/hadoop/app
    #解壓
    tar -zxvf jdk1.7.tar.gz -C /home/hadoop/app
  3.將java新增到環境變數中
    vim /etc/profile
    #在檔案最後新增
    export JAVA_HOME=/home/hadoop/app/jdk1.7
    export PATH=$PATH:$JAVA_HOME/bin
    #重新整理配置
    source /etc/profile

 

三.安裝hadoop叢集

  1.上傳hadoop安裝包到/home/hadoop/app目錄下

  2.修改配置檔案

    (1)vi  hadoop-env.sh

    # 配置jdk路徑

    export JAVA_HOME=/home/hadoop/app/jdk1.7

    (2)vi  core-site.xml    

<configuration>

      <!-- 指定HADOOP所使用的檔案系統schema(URI),HDFS的老大(NameNode)的地址 -->

      <property>

        <name>fs.defaultFS</name>

        <value>hdfs://hdp-node-01:9000</value>

      </property>

      <!-- 指定hadoop執行時產生檔案的儲存目錄 -->

      <property>

        <name>hadoop.tmp.dir</name>

        <value>/home/HADOOP/apps/hadoop-2.6.1/tmp</value>

      </property>

</configuration>

    (3)vi  hdfs-site.xml       

 <configuration>

    <#namenode元資料儲存地址>

    <property>

      <name>dfs.namenode.name.dir</name>

      <value>/home/hadoop/data/name</value>

    </property>

    <#datanode元資料儲存地址>

    <property>

      <name>dfs.datanode.data.dir</name>

      <value>/home/hadoop/data/data</value>

    </property>

    <#hdfs副本個數>

     <property>

      <name>dfs.replication</name>

      <value>3</value>

    </property>

    <#配置hdfs的web管理介面的訪問地址>

    <property>

      <name>dfs.secondary.http.address</name>

      <value>hdp-node-01:50090</value>

    </property>

  </configuration>

     vi  mapred-site.xml    

<configuration>

      <!-- 指定mr執行在yarn上 -->

      <property>

        <name>mapreduce.framework.name</name>

        <value>yarn</value>

      </property>

</configuration>

    vi  yarn-site.xml    

<configuration>

      <!-- 指定YARN的老大(ResourceManager)的地址 -->

     <property>

       <name>yarn.resourcemanager.hostname</name>

       <value>hdp-node-01</value>

    </property>

    <!-- reducer獲取資料的方式 -->

    <property>

      <name>yarn.nodemanager.aux-services</name>

      <value>mapreduce_shuffle</value>

    </property>

 </configuration>

    vi  salves(配置叢集機器)    

       hdp-node-01

    hdp-node-02

    hdp-node-03

  3.啟動叢集(方便指令碼執行的話可以hadoop環境變數,啟動過程需要多次輸入密碼,沒有配置免密碼登入)

    初始化HDFS

    bin/hadoop  namenode  -format

    啟動HDFS

    sbin/start-dfs.sh

    啟動YARN

    sbin/start-yarn.sh

    驗證是否啟動成功   使用jps命令驗證檢視程序是否啟動

    

    http://192.168.1.101:50070 (HDFS管理介面)
    http://192.168.1.101:8088 (MR管理介面)

    

 

 

四.配置ssh免登陸

  #生成ssh免登陸金鑰

  #進入到我的home目錄
    cd ~/.ssh

 

    ssh-keygen -t rsa (四個回車)
  執行完這個命令後,會生成兩個檔案id_rsa(私鑰)、id_rsa.pub(公鑰)
  將公鑰拷貝到要免密登陸的目標機器上
    ssh-copy-id localhost
  ---------------------------
  ssh免登陸:
  生成key:
  ssh-keygen
  複製從A複製到B上:
  ssh-copy-id B
  驗證:
  ssh localhost/exit,ps -e|grep ssh
  ssh A #在B中執行

 

五.測試叢集

  1、上傳檔案到HDFS

    從本地上傳一個文字檔案到hdfs的/wordcount/input目錄下

    [[email protected] ~]$ HADOOP fs -mkdir -p /wordcount/input

    [[email protected] ~]$ HADOOP fs -put /home/HADOOP/somewords.txt  /wordcount/input

  2、執行一個mapreduce程式

    在HADOOP安裝目錄下,執行一個示例mr程式

    cd $HADOOP_HOME/share/hadoop/mapreduce/

    hadoop jar mapredcue-example-2.6.1.jar wordcount /wordcount/input  /wordcount/output