vmware10
Centos6.5 64位版本
JDK1.8linux32位版
Hadoop2.7.3版本html
字符界面安裝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端口進行測試java
1.添加hadoop用戶node
2.切換到hadoop用戶linux
配置無密碼ssh認證鏈接web
...(自查)apache
獲取hadoop安裝包windows
從hadoop的官網獲取你須要的版本,本教程採用2.8.X版本的安裝包。centos
官網地址:http://hadoop.apache.org/releases.html瀏覽器
jdkbash
hadoop自身是用java編寫的,因此須要java環境來運行它。須要下載一個和你選擇的hadoop版本匹配的JDK安裝包。Hadoop版本與java版本的對應關係以下:
hadoop3.0 java8
hadoop2.7及後續版本 java7
hadoop2.6及之前的版本 java6
爲方便安裝,咱們到java的oracle官網下載一個64位的jdk8的rpm包。
...(省略)
上傳安裝包
Hadoop用戶操做:
查看上傳的文件
配置hadoop環境變量
爲hadoop配置JAVA_HOME
配置hadoop集羣
集羣配置文件下載地址:
連接:https://pan.baidu.com/s/1R5081Nd82B5u8DLMysnY7A 密碼 :ldsq
core-site.xml 核心配置文件
它會被全部的hadoop進程使用。需在該配置文件中配置hadoop集羣默認文件系統的訪問uri(必需配置),能夠指定IO緩衝區的大小等。
這個小集羣的的配置以下:
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://192.168.0.11:9000</value> </property> </configuration>
hdfs-site.xml hdfs集羣參數配置文件
在該文件配置hdfs集羣的參數,經常使用的配置參數以下,若是都是使用的默認值,則不需進行配置。
小集羣的配置以下:
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
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>
一、複製
二、修改複製機器:
修改主機名:
hostnamectl set-hostname xxx
修改ip地址:
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
修改 IPADDR=指定ip
重啓網絡服務
systemctl restart network
啓動hdfs集羣
一、格式化文件系統
$ hdfs namenode -format
二、在NameNode上啓動hdfs集羣
$ start-dfs.sh
hadoop進程的日誌將輸出在目錄 $HADOOP_HOME/logs下
三、經過瀏覽器瀏覽NameNode的web界面,默認的瀏覽地址爲:
http://namenode-ip:50070
如 http://192.168.0.111:50070
可用jps命令查看各個節點上運行的java進程
四、在NameNode上關閉hdfs集羣
$ stop-dfs.sh
啓動yarn集羣
一、啓動:在ResourceManager上啓動yarn集羣
$ start-yarn.sh
二、經過瀏覽器瀏覽ResourceManager的web界面,默認的瀏覽地址爲:
http:// ResourceManager-ip:8088
如 http://192.168.0.111:8088
三、關閉:在ResourceManager上關閉yarn集羣
$ stop-yarn.sh
啓動jobHistoryServer
mr-jobhistory-daemon.sh start historyserver
一、在HDFS上建立執行MapReduce做業所需的目錄
$ hdfs dfs -mkdir /user
$ hdfs dfs -mkdir /user/<username>
二、將輸入文件拷貝到分佈式文件系統上:
$ hdfs dfs -mkdir input
$ hdfs dfs -put etc/hadoop/*.xml input
三、運行MapReduce示例做業:
$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.3.jar grep input output 'dfs[a-z.]+'
四、查看輸出結果文件:
方式一:將分佈式文件系統的輸出文件拷貝到本地文件系統上,再查看:
$ hdfs dfs -get output output
$ cat output/*
方式二:直接在分佈式文件系統上查看輸出文件:
$ hdfs dfs -cat output/*
咱們會發現,系統被卡死了,爲何呢?由於機器的內存只有512M,內存被耗盡了。用 ctrl+c強制結束(會等待好長一段時間),再來看一下內存使用狀況:
其實咱們在啓動HDFS、yarn後,內存就用完了。重啓系統後,咱們啓動hdfs、yarn,立刻看一下內存的使用狀況:
再要執行mapreduce任務又須要不少內存(不夠用),根本就執行不了。
解決辦法:
一、調高機器的內存到1G
二、運行做業時加入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.]+'