1. 程式人生 > >大資料(Hadoop2.7.3偽分佈搭建)

大資料(Hadoop2.7.3偽分佈搭建)

安裝準備:

vmware10
Centos6.5 64位版本
JDK1.8linux32位版
Hadoop2.7.3版本

 

安裝過程講解:

 字元介面安裝centos6.5,網路設定為主機模式或者橋連線
 配置靜態ip 並測試能不能從主機ping的通虛擬機器
 使用secureCRT進行遠端ssh登陸
 配置etc/hosts 新增ip對應的主機名,比如192.168.17.2 master
 安裝ssh 客戶端,通過修改本地yum源來進行,成功後重啟服務
 關閉防火牆 chkconfig
 建立普通使用者 hadoop(名字可自定義)
 設定免金鑰ssh登入(偽分散式其實可以省略
 上傳jdk和hadoop2.7.3
 使用普通使用者登陸,在home目錄下建立bd資料夾(非必需)
 分別解壓jdk和hadoop2.7.3,並測試
 配置普通使用者的環境變數,.bashrc(也可以直接在etc/profile進行配置)
 測試echo $JAVA_HOME
 修改配置5個配置檔案
 hadoop-env.sh
 core-site.xml
 hdfs-site.xml
 mapred-sit.xml(將mapred-sit.xml.template重命令)
 yarn-site.xml
 使用jdk下面的bin目錄中的jps來檢視下程序
 或者檢視日誌,在hadoop解壓目錄中logs裡面
 在主機windows裡面的system32/drivers/etc/hosts裡面新增linux主機名對應的linux裡面的ip
 通過瀏覽器進行訪問8088埠和50070埠進行測試

具體操作:

1.新增hadoop使用者

2.切換到hadoop使用者

配置無密碼ssh認證連線

...(自查)

獲取hadoop安裝包

從hadoop的官網獲取你需要的版本,本教程採用2.8.X版本的安裝包。

官網地址:http://hadoop.apache.org/releases.html

jdk

hadoop自身是用java編寫的,所以需要java環境來執行它。需要下載一個和你選擇的hadoop版本匹配的JDK安裝包。Hadoop版本與java版本的對應關係如下:
    hadoop3.0                    java8
    hadoop2.7及後續版本        java7
    hadoop2.6及以前的版本    java6
為方便安裝,我們到java的oracle官網下載一個64位的jdk8的rpm包。

 

安裝jdk

...(省略)

 

安裝hadoop

上傳安裝包

Hadoop使用者操作:

檢視上傳的檔案

配置hadoop環境變數

為hadoop配置JAVA_HOME

配置hadoop叢集

叢集配置檔案下載地址:

連結:https://pan.baidu.com/s/1R5081Nd82B5u8DLMysnY7A 密碼 :ldsq

 

Hadoop基礎配置

core-site.xml  核心配置檔案

它會被所有的hadoop程序使用。需在該配置檔案中配置hadoop叢集預設檔案系統的訪問uri(必需配置),可以指定IO緩衝區的大小等。

這個小叢集的的配置如下:

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

 

HDFS叢集配置

hdfs-site.xml  hdfs叢集引數配置檔案

在該檔案配置hdfs叢集的引數,常用的配置引數如下,如果都是使用的預設值,則不需進行配置。

  • NameNode相關的引數:

  • DataNode相關的引數:

小叢集的配置如下:  

hdfs-site.xml

<configuration>
	<property>
		<description>檔案的備份數量</description>
		<name>dfs.replication</name>
		<value>3</value>
	</property>
	<property>
		<description>NameNode檔案系統名稱空間存放目錄</description>
		<name>dfs.namenode.name.dir</name>
		<value>/home/hadoop/namespace</value>
	</property>
	<property>
		<description>DataNode上檔案資料塊的存放目錄</description>
		<name>dfs.datanode.data.dir</name>
		<value>/home/hadoop/data</value>
	</property>
</configuration>

從節點(DataNode)列表配置:
在NameNode的etc/hadoop/slaves 檔案列出所有的DataNode的ip,一個一行。

10.0.2.20
10.0.2.21
10.0.2.22

 

YARN叢集配置

etc/hadoop/mapred-site.xml 配置

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

etc/hadoop/yarn-site.xml 配置

<configuration>

<!-- Site specific YARN configuration properties -->

	<property>
		<description>resourceManager節點的主機地址</description>
		<name>yarn.resourcemanager.hostname</name>
		<value>192.168.0.13</value>
	</property>
	
	<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

</configuration>

 

複製機器

1、複製

2、修改複製機器:
修改主機名:
    hostnamectl set-hostname xxx

修改ip地址:
    vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
    修改 IPADDR=指定ip

重啟網路服務
    systemctl restart network

 

啟動叢集

啟動hdfs叢集

1、格式化檔案系統
$ hdfs namenode -format

2、在NameNode上啟動hdfs叢集
$ start-dfs.sh

hadoop程序的日誌將輸出在目錄 $HADOOP_HOME/logs下  

3、通過瀏覽器瀏覽NameNode的web介面,預設的瀏覽地址為:
http://namenode-ip:50070
    如 http://192.168.0.111:50070 

可用jps命令檢視各個節點上執行的java程序

4、在NameNode上關閉hdfs叢集
$ stop-dfs.sh

啟動yarn叢集

1、啟動:在ResourceManager上啟動yarn叢集
$ start-yarn.sh

2、通過瀏覽器瀏覽ResourceManager的web介面,預設的瀏覽地址為:
http:// ResourceManager-ip:8088
    如 http://192.168.0.111:8088

3、關閉:在ResourceManager上關閉yarn叢集
$ stop-yarn.sh

啟動jobHistoryServer
mr-jobhistory-daemon.sh start historyserver

 

測試

1、在HDFS上建立執行MapReduce作業所需的目錄
$ hdfs dfs -mkdir /user
$ hdfs dfs -mkdir /user/<username>

2、將輸入檔案拷貝到分散式檔案系統上:
$ hdfs dfs -mkdir input
$ hdfs dfs -put etc/hadoop/*.xml input

3、執行MapReduce示例作業:
$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.3.jar grep input output 'dfs[a-z.]+'

4、檢視輸出結果檔案:
方式一:將分散式檔案系統的輸出檔案拷貝到本地檔案系統上,再檢視:
$ hdfs dfs -get output output
$ cat output/*

方式二:直接在分散式檔案系統上檢視輸出檔案:
    $ hdfs dfs -cat output/*

我們會發現,系統被卡死了,為什麼呢?因為機器的記憶體只有512M,記憶體被耗盡了。用 ctrl+c強制結束(會等待好長一段時間),再來看一下記憶體使用情況:

其實我們在啟動HDFS、yarn後,記憶體就用完了。重啟系統後,我們啟動hdfs、yarn,馬上看一下記憶體的使用情況:

再要執行mapreduce任務又需要很多記憶體(不夠用),根本就執行不了。
解決辦法:
1、調高機器的記憶體到1G
2、執行作業時加入jvm重用引數,如下所示:

hadoop jar /usr/hadoop/latest/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.3.jar grep -Dmapreduce.job.ubertask.enable=true input output5 'hdf[a-z.]+'