Hadoop的搭建分爲三種形式:單機模式、僞分佈模式、徹底分佈模式,只要掌握了徹底分佈模式,也就是集羣模式的搭建,剩下的兩種模式天然而然就會用了,通常前兩種模式通常用在開發或測試環境下,Hadoop最大的優點就是分佈式集羣計算,因此在生產環境下都是搭建的最後一種模式:徹底分佈模式。html
須知:java
關於Hadoop集羣環境軟件的選擇,無非就是圍繞這個幾個軟件產品去選擇:OS操做系統,Hadoop版本,JDK版本,Hive版本、MySQL版本等。node
提早規劃出四臺服務器用來搭建Hadoop集羣,而後分別爲其分配了機器名稱、IP,IP須要設置爲統一網段,可根據使用的狀況,進行動態調整的。
另外說明:搭建了兩臺Ubuntu的服務器來單獨安裝MySQLServer,搭建了一個主從模式,Ubuntu是一個界面友好的操做系統,這裏和Hadoop集羣分離的目的是由於Mysql數據庫是比較佔內存資源的,因此咱們單獨機器來安裝,固然,MySQL並非Hadoop集羣所須要的,二者沒有必然的關係,這裏搭建它的目的就爲了後續安裝Hive來分析數據應用的,而且咱們能夠在這個機器裏進行開發調試,固然Window平臺也能夠,畢竟咱們使用Windows平臺是最熟練的。(hive是基於Hadoop的一個數據倉庫工具,能夠將結構化的數據文件映射爲一張數據庫表,並提供簡單的sql查詢功能,能夠將sql語句轉換爲MapReduce任務進行運行。 其優勢是學習成本低,能夠經過類SQL語句快速實現簡單的MapReduce統計,沒必要開發專門的MapReduce應用,十分適合數據倉庫的統計分析。)web
安裝前需明瞭:sql
mkdir /usr/java
, chown hadoop:hadoop /usr/java/
, ll /usr
vim /etc/profile
# set java environment export JAVA_HOME=/usr/java/jdk1.8.0_121 export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
cp -r jdk1.8.0_121 /usr/java/
java -version
mkdir /usr/hadoop
cp -r hadoop-2.6.4 /usr/hadoop
chown hadoop:hadoop /usr/hadoop/
ll /usr/
cd /usr/hadoop/hadoop-2.6.4/
vim etc/hadoop/core-site.xml
<configuration> <!-- HDFS file path --> <!-- HDFS默認的鏈接地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://192.168.1.50:9000</value> </property> <!-- 流文件的配置大小,默認是4K過小了,這裏將這個值改的大 --> <property> <name>io.file.buffer.size</name> <value>131072</value> </property> <!--生成臨時結果的配置路徑,須要建立目錄tmp--> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/hadoop/hadoop-2.6.4/tmp</value> <description>Abasefor other temporary directories.</description> </property> </configuration>
mkdir tmp
vim etc/hadoop/hdfs-site.xml
<property> <name>dfs.namenode.secondary.http-address</name> <value>192.168.1.50:9001</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/hadoop/hadoop-2.6.4/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/hadoop/hadoop-2.6.4/dfs/data</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property>
mkdir dfs
、mkdir dfs/name
、mkdir dfs/data
cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
由於在這裏Hadoop已經提供了一個模板,直複製建立,而後修改此文件:vim etc/hadoop/mapred-site.xml
<!-- 第一個就是制定當前Hadoop的並行運行計算架構,這裏爲yarn,第二個就是Job運行的歷史記錄Server,第三個就是歷史運行記錄的Web服務器。 --> <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>192.168.1.50:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>192.168.1.50:19888</value> </property> </configuration>
vim etc/hadoop/yarn-site.xml
<!--後續的調優會一直圍繞這個文件進行--> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>192.168.1.50:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>192.168.1.50:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>192.168.1.50:8035</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>192.168.1.50:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>192.168.1.50:8088</value> </property>
export JAVA_HOME=/usr/java/jdk1.8.0_73
vim etc/hadoop/hadoop-env.sh
vim etc/hadoop/yarn-env.sh
chown -R hadoop:hadoop /usr/hadoop/hadoop-2.6.4/
bin/hadoop namenode -format
運行結果: sbin/start-dfs.sh
而後查看jps進程: bin/hadoop dfsadmin -report
sbin/start-yarn.sh
上一部分是單節點的安裝,工做已經完成了一半,下面進行的是徹底分佈式的環境搭建
爲了減小配置時間,直接對上一節點進行克隆
節點基本信息:
總共須要5臺服務器來使用,四臺用來搭建Hadoop集羣使用,另一臺(可選)做爲MySQL等外圍管理Hadoop集羣來使用。在開發的時候通常也是直接經過鏈接外圍的這臺機器來管理Hadoop整個集羣數據庫
vim /etc/sysconfig/network
vim /etc/hosts
vim /etc/ssh/sshd_config
/sbin/service sshd restart
ssh localhost
這個時候會讓你輸入密碼,是由於沒有生成密鑰,下面進行設置
ssh-keygen -t rsa -P ''
scp ~/.ssh/id_rsa.pub 遠程用戶名@遠程服務器IP:~/
複製的公鑰文件存在默認的路徑「/home/hadoop/.ssh」scp ~/.ssh/id_rsa.pub hadoop@192.168.1.51:~/
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
SSH <遠程IP && 域名>
在master機器上登陸slave01機器上實驗下,看是否還須要進行密碼輸入ssh slave01.hadoop
從Master機器上面無密碼的登陸到Slave01機器上面,那麼說明剛纔的配置生效了。vim /usr/hadoop/hadoop-2.6.4/etc/hadoop/slaves
將各個Slave的IP或者機器名寫入vim /usr/hadoop/hadoop-2.6.4/etc/hadoop/hdfs-site.xml
bin/hadoop namenode -format
start-dfs.sh
start-yarn.sh