簡介:
Hadoop是一個由Apache基金會所開發的分布式系統基礎架構。用戶可以在不了解分布式底層細節的情況下,開發分布式程序。充分利用集群的威力進行高速運算和存儲。
Hadoop實現了一個分布式文件系統(Hadoop Distributed File System),簡稱HDFS。HDFS有高容錯性的特點,並且設計用來部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)來訪問應用程序的數據,適合那些有着超大數據集(large data set)的應用程序。HDFS放寬了(relax)POSIX的要求,可以以流的形式訪問(streaming access)文件系統中的數據。
Hadoop的框架最核心的設計就是:HDFS和MapReduce。HDFS為海量的數據提供了存儲,而MapReduce則為海量的數據提供了計算。
分布式架構的常見概念:
1.集群
小飯店原來是一個廚師,切菜洗菜備料炒菜全干。后來客人多了,廚房一個廚師忙不過來,又請了個廚師,兩個廚師都能炒一樣的菜,這兩個廚師的關系就是集群。
2.分布式
為了讓廚師專心炒菜,把菜做到極致,又請了個配菜師負責切菜,備菜,備料,廚師和配菜師的關系就是分布式的,一個配菜師也忙不過來,有請了個配菜師,這兩個配菜師的關系就是集群了。所以說有分布式的架構中可能有集群,但集群不等於有分布式。
3.節點
節點是指一個可以獨立按照分布式協議完成一組邏輯的程序個體。在具體的項目中,一個節點表示的是一個操作系統上的進程。
一.hadoop分布式集群的搭建
我們需要搭建hadoop集群環境首先需要環境的支持
1.環境支持
操作系統: CentOS7 64
JDK環境: JDK 8
Hadoop環境: hadoop-2.8.0
虛擬機名稱: master(主)+slave1(從1)+slave2(從2)
首先配置一個靜態id
配置真機網絡共享
配置虛擬機虛擬網絡
找到系統工具,設置,網絡
將自動改為手動配置如下信息(配置完了重啟即可)
2.設置主機名
我這里是直接將所有的配置全都配置完克隆了兩台slave
#編輯hostname文件修改主機名稱
vim /etc/hostname
主就使用命令改為master,從就使用命令改為slave01,slave02
使用命令查看主機名是否修改成功
注意:如果不成功可能需要重啟虛擬機!!!
hostname
3.安裝JDK
注意:Linux上原來的JDK是不完整的需要我們手動將他們一個個的卸載重新安裝我們的JDK
首先先使用命令查看Linux上原來的JDK
#查看各自默認安裝的JDK rpm -qa|grep jdk
使用 rpm -e --nodeps命令 一個一個卸載
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.91-2.6.2.3.el7.x86_64 rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.65-3.b17.el7.x86_64 rpm -e --nodeps java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64 rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.91-2.6.2.3.el7.x86_64
安裝我們的JDK,這里我是使用xf工具上傳的解壓包上傳到/usr/local/java
注意:這里的java路徑是我自己創建的
使用命令解壓壓縮包
#解壓壓縮文件 tar -zxvf jdk-8u181-linux-x64.tar.gz
解壓成功后查看目錄
配置JDK
首先修改ect下的profile文件
#編輯profile文件
vim /etc/profile
加入以下內容,請各位按照自身的安裝目錄為准
export JAVA_HOME=/usr/local/jdk1.8.0_121 export CLASSPATH=.:%JAVA_HOME%/lib/dt.jar:%JAVA_HOME%/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin
在文件的最底下添加即可
使用命令刷新一下文件,因為Linux不會自己刷新
source /etc/profile
輸入java -version命令查看是否安裝成功
4.安裝並完成hadoop的配置
使用xf工具將hadoop的壓縮包上傳到Linux里的usr/local/hadoop(自己創建的)
使用命令行解壓此壓縮包
tar -zxvf hadoop-2.8.0.tar.gz
編輯profile文件也就是配置JDK的文件
vim /ect/profile
添加如下內容,路徑請務必寫你自己的
export HADOOP_HOME=/usr/local/hadoop-2.8.0 export PATH=$PATH:$HADOOP_HOME/bin:$PATH:$HADOOP_HOME/sbin
添加完成后刷新文件
source /etc/profile
編輯hosts文件,將三台主機的主機名稱對應的ip地址寫入(我這里還沒有后續是直接克隆的)
#編輯hosts文件 vim /etc/hosts #寫入如下內容,注意IP地址以自身為准 192.168.147.11 master 192.168.147.12 slave1 192.168.147.13 slave2
完成hadoop內部的配置,切換到hadoop2.8的內部文件夾下
cd /usr/local/hadoop/hadoop-2.8.0/etc/hadoop/
配置slaves文件
vim slaves
刪除掉原有的localhost,添加slave主機名
配置core-site.xml文件
vim core-site.xml
在configuration節點中加入如下節點
<property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <!--視自身的安裝位置決定--> <value>/usr/local/hadoop-2.8.0/tmp</value> </property>
配置hdfs-site.xml文件
vim hdfs-site.xml
在configuration節點中加入如下節點
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<!--以自身安裝目錄為准-->
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop-2.8.0/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop-2.8.0/hdfs/data</value>
</property>
編輯hadoop-env.sh
加入以下內容也就是JDK的安裝目錄
export JAVA_HOME=/usr/local/jdk1.8.0_121/
編輯yarn-env.sh文件
配置yarn-site.xml
vim yarn-site.xml
在configuration節點中加入如下內容
<property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>master:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:8030</value> </property> <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master:8088</value> </property>
配置mapred-site.xml文件
由於mapred-site.xml文件不存在,需要將mapred-site.xml.template克隆出來一份
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
加入如下內容
<property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>master:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master:19888</value> </property>
5.克隆主機
克隆完了修改靜態ip
1、在master主機上運行如下
hdfs namenode -format
2、啟動服務命令
start-all.sh
3、停止集群的命令
stop-all.sh