Hadoop 2.x 入門學習(一)--Centos 6.8 系統Hadoop 2.7.4 僞分佈式安裝配置詳解

一、測試環境準備

    由於個人硬件環境的限制,在測試過程中我是以VMware開虛擬機來替代真實的機器,宿主機和虛擬機配置如下:

    宿主機:

        CPU:  Intel i5-3470 CPU 3.20GHz     內存:  8.00 GB     操作系統: Windows 7 旗艦版  (64位)

    虛擬機:

         操作系統: Centos 6.8 x86_64    內存:  2.00 GB       CPU核數: 1    網絡模式: host-only

    在準備好Linux環境之後,下面進行一些前期的準備工作,主要包括虛擬機網絡模式設置、修改Linux主機名、修改IP、修改主機名和IP的映射關係以及關閉防火牆,下面一一介紹具體操作步驟:

    1. 修改虛擬機網絡模式

        在測試過程中爲方便操作Linux虛擬機,這裏我們把虛擬機與宿主機的網絡連接方式改爲host-only模式(這裏虛擬機不需要連接外網),當然選擇NAT、橋接模式也是可以的。具體的設置方式爲:

       (1).  點擊VMware快捷方式,右鍵打開文件所在位置 -> 雙擊vmnetcfg.exe -> VMnet1 host-only ->修改subnet ip 設置網段:192.168.33.0 子網掩碼:255.255.255.0 -> apply -> ok
        (2). 回到windows --> 打開網絡和共享中心 -> 更改適配器設置 -> 右鍵VMnet1 -> 屬性 -> 雙擊IPv4 -> 設置windows的IP:192.168.33.10 子網掩碼:255.255.255.0 -> 點擊確定
        (3). 在虛擬軟件上 --My Computer -> 選中虛擬機 -> 右鍵 -> settings -> network adapter -> host only -> ok

        當然修改虛擬機網絡的方式有好多種,只要配置連接方式爲host-only,設置好相應的IP就行了,這裏我採用的是192.168.33.0網段,連接Windows一端的IP我設置成了192.168.33.10,Linux自身的IP設置爲192.168.33.100,如有疑問也可以參考其他文章進行操作。

    2.  修改Linux主機名

        爲了操作方便,這裏我們修改一下Linux主機名。設置方式爲:

        [hadoop@server ~]$  sudo vim /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=server.chargehadoop.com

    3.  修改Linux自身IP

        修改Linux環境IP,有兩種方式,喜歡使用圖形界面操作的可以選擇方式一,對於那些高大上的熟悉命令行操作的朋友可以選擇方式二(個人認爲,玩Linux還是推薦命令行模式比較好)。

        方式一:通過Linux圖形界面進行修改
         進入Linux圖形界面 -> 右鍵點擊右上方的兩個小電腦 -> 點擊Edit connections -> 選中當前網絡System eth0 -> 點擊edit按鈕 -> 選擇IPv4 -> method選擇爲manual -> 點擊add按鈕 -> 添加IP:192.168.33.100 子網掩碼:255.255.255.0 網關:192.168.33.1 -> apply

        方式二:修改配置文件方式(###代表修改的部分,其他的可以不變)
           [hadoop@server ~]$  sudo  vim /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE="eth0"
BOOTPROTO="static"               ###
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
IPADDR="192.168.33.100"        ###
NETMASK="255.255.255.0"      ###
GATEWAY="192.168.33.1"        ###

        修改完成後,重啓網絡,sudo service network restart,看到一切OK說明網絡設置成功,如果出現Feild刪除網絡連接再進行上述配置(這時候圖形模式就體現優勢了),最後通過ping進行驗證是否設置成功。

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

        [hadoop@server ~]$  sudo vim /etc/hosts
        192.168.33.100   server.chargehadoop.com

    5.  關閉防火牆
        #查看防火牆狀態
        [hadoop@server ~]$  sudo service iptables status
        #關閉防火牆
        [hadoop@server ~]$  sudo service iptables stop
        #查看防火牆開機啓動狀態
        [hadoop@server ~]$  sudo chkconfig iptables --list
        #關閉防火牆開機啓動
        [hadoop@server ~]$  sudo  chkconfig iptables off

    6.  配置ssh免登陸
        生成ssh免登陸密鑰
        cd ~,進入到我的home目錄
        [hadoop@server ~]$  cd .ssh/
        ssh-keygen -t rsa (四個回車)
        執行完這個命令後,會生成兩個文件id_rsa(私鑰)、id_rsa.pub(公鑰)
        將公鑰拷貝到要免登陸的機器上
        [hadoop@server ~]$  cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
        或
        [hadoop@server ~]$  ssh-copy-id -i localhost

    7.  重啓Linux
        [hadoop@server ~]$  sudo reboot

    到此,安裝Hadoop的準備工作已經完畢,下面分析Hadoop僞分佈式配置的詳細過程。

二、安裝jdk

    1.  上傳jdk安裝包

        到oracle官網http://www.oracle.com/technetwork/java/javase/downloads/index.html下載一個相對應的jdk安裝包,這裏使用的是jdk1.8.0_121 x64 linux版本,上傳到Linux虛擬機中。

    2.  解壓jdk

        #創建文件夾
        [hadoop@server ~]$  sudo mkdir /usr/java
        #解壓
        [hadoop@server ~]$  sudo  tar -zxvf jdk-8u121-linux-x64.tar.gz -C /usr/java/

    3.  將java添加到環境變量中

        [hadoop@server ~]$  vim /etc/profile
        #在文件最後添加

export JAVA_HOME=/usr/java/jdk1.8.0_121
export PATH=$PATH:$JAVA_HOME/bin

        #刷新配置
        [hadoop@server ~]$  source /etc/profile

三、安裝Hadoop

    1. 上傳hadoop安裝包

        到Hadoop官網http://mirrors.cnnic.cn/apache/hadoop/common/下載Hadoop2.7.4安裝包,上傳Hadoop2.7.4.tar.gz文件到虛擬機中。

    2.  解壓hadoop安裝包

        [hadoop@server ~]$   sudo mkdir -p /opt/modules/hadoop

        更改目錄的屬主爲hadoop用戶

        [hadoop@server ~]$   chown -R hadoop:hadoop /opt/modules/hadoop
        #解壓到/opt/modules/hadoop目錄下
        [hadoop@server ~]$   tar -zxvf hadoop-2.7.4.tar.gz -C /opt/modules/hadoop

    3.  修改配置文件(這裏需要修改5個)

        第一個:配置hadoop-env.sh、mapred-env.sh、yarn-env.sh的JAVA_HOME設置
        找到對應的JAVA_HOME設置項,更改爲:        

export JAVA_HOME=/usr/java/jdk1.8.0_121

        第二個:core-site.xml

<configuration>
    <!-- 指定HDFS(namenode)的通信地址 -->
    <property>
        <name>fs.defaultFS</name>
        <!--hadoop2.x以後版本namenode的rpc端口一般都用8020,1.x默認使用9000-->
        <value>hdfs://server.chargehadoop.com:8020</value>
    </property>
    <!-- 指定hadoop運行時產生文件的存儲路徑 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <!--需要提前創建好此目錄-->
        <value>/opt/data/hadoop/tmp</value>
    </property>
</configuration>

         第三個:hdfs-site.xml

<configuration>
	<!-- 設置hdfs副本數量 -->
	<property>
		<name>dfs.replication</name>
		<value>1</value>
	</property>
</configuration>

        第四個:mapred-site.xml.template 需要重命名: mv mapred-site.xml.template mapred-site.xml

<configuration>
	<!-- 通知框架MR使用YARN -->
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
</configuration>

        第五個:yarn-site.xml

<configuration>
	<!-- reducer取數據的方式是mapreduce_shuffle -->
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
</configuration>

    4.  將hadoop添加到環境變量
        [hadoop@server hadoop-2.7.4]$   vim /etc/profile

export JAVA_HOME=/usr/java/jdk1.8.0_121
export HADOOP_HOME=/opt/modules/hadoop/hadoop-2.7.4
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

        [hadoop@server hadoop-2.7.4]$  source /etc/profile

    5.  格式化HDFS(namenode)第一次使用時要格式化
        [hadoop@server hadoop-2.7.4]$  bin/hdfs namenode -format

    6.  啓動hadoop
        先啓動HDFS
        1) 先啓動namenode:

            [hadoop@server hadoop-2.7.4]$  sbin/hadoop-daemon.sh start namenode

        2) 接着啓動datanode:

            [hadoop@server hadoop-2.7.4]$ sbin/hadoop-daemon.sh start datanode

        再啓動YARN       

        1) 先啓動ResourceManager:

            [hadoop@server hadoop-2.7.4]$  sbin/yarn-daemon.sh start resourcemanager

        2) 接着啓動NodeManager:

            [hadoop@server hadoop-2.7.4]$ sbin/yarn-daemon.sh start nodemanager

    7.  驗證是否啓動成功
        [hadoop@server ~]$ jps
        2369 NameNode
        3010 ResourceManager
        4854 Jps
        2456 DataNode
        3259 NodeManager

    如果安裝成功,通過jps命令可以看到以上四個java進程。同時可以通過hadoop自帶的管理界面驗證服務是否成功。

        http://192.168.33.100:50070   (HDFS管理界面)

    
        http://192.168.33.100:8088 (MR管理界面)

     

到此,hadoop2.7.4僞分佈式搭建已經完成,大家可以用一下操作進行驗證。

    1. 驗證HDFS
        向hdfs上傳一個文件,然後查看hdfs中是否存在

        [hadoop@server hadoop-2.7.4]$  bin/hdfs dfs -mkdir -p /user/hadoop/conf

        [hadoop@server hadoop-2.7.4]$  bin/hdfs dfs -put etc/hadoop/core-site.xml /user/hadoop/conf
        [hadoop@server hadoop-2.7.4]$  bin/hdfs dfs -ls /user/hadoop/conf

    2.  驗證YARN
        運行一下hadoop提供的demo中的WordCount程序,統計每個單詞出現的次數
     yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.4.jar wordcount input output

       注意,這裏需要事先創建hdfs上的input目錄,並將準備好的文件上傳到此目錄下,並且output目錄必須不存在,否則運行失敗。

      [hadoop@server hadoop-2.7.4]$ cd /opt/data/hadoop/data/   

      [hadoop@server data]$ vim wc.input

hadoop spark
hadoop hive
mapreduce hive
hadoop yarn
hello world
hello hadoop

      [hadoop@server hadoop-2.7.4]$  cd /opt/modules/hadoop/hadoop-2.7.4

      [hadoop@server hadoop-2.7.4]$  bin/hdfs dfs -mkdir -p /user/hadoop/wordcount/input

  [hadoop@server hadoop-2.7.4]$ bin/hdfs dfs -put /opt/data/hadoop/data/wc.input  /user/hadoop/wordcount/output

     [hadoop@server hadoop-2.7.4]$ bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.4.jar wordcount /user/hadoop/wordcount/input /user/hadoop/wordcount/output

       等待運行完成可以查看運行結果:

       [hadoop@server hadoop-2.7.4]$ bin/hdfs dfs -ls /user/hadoop/wordcount/output
      

      運行結果保存在part-r-00000中,可以通過以下命令查看具體結果

       [hadoop@server hadoop-2.7.4]$ bin/hdfs dfs -text /user/hadoop/wordcount/output/pa*
      

    OK,至此,hadoophadoop2.7.4僞分佈式搭建已經完成,大功告成!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章