1、Hadoop簡介:html
Hadoop是由Apache基金會所開發的分佈式系統基礎架構,實現了一個分佈式文件系統(Hadoop Distributed File System),簡稱HDFS;Hadoop框架最核心設計就是HDFS和MapReduce,HDFS爲海量數據提供了存儲,MapReduce爲海量數據提供了計算。java
Hadoop要解決的問題:海量數據的存儲(HDFS)、海量數據的分析(MapReduce)和資源管理調度(YARN)node
Hadoop主要做用於分佈式linux
2、Hadoop實現機制apache
一、Hadoop是把一個文件切割成多個塊(block),分別存儲到不一樣服務器上,並且其中某些服務器又存有這個文件的多個塊,以下圖把文件A分紅4塊(A1\A2\A3\A4)存放在4個服務器上;這樣不只解決了併發請求一個文件時形成的阻塞,增大吞吐量,還作了副本備份服務器
二、Hadoop分佈式部署服務器,那就分主服務器和輔服務器。主服務器也就是NameNode,存儲文件分塊的相關信息,如哪一個塊在哪一個服務器哪一個路徑下,而真正存儲文件的是輔服務器,即DataNode。客戶端請求文件時無需關心如何請求塊,只須要知道HDFS爲文件虛擬的一個文件路徑便可,也就是直接請求NameNode。網絡
三、Hadoop只有一個NameNode,能夠有多個DataNode,當DataNode不夠用時還能夠添加架構
3、Hadoop安裝、配置及啓動(CentOS7系統)併發
一、官網下載Hadoop hadoop-2.7.3.tar.gz框架
二、須要的軟件環境JDK、SSH、rsync;JDK安裝和部署參照本博文linux學習之系統管理、網絡配置、軟件安裝第九步;ssh、rsync安裝直接用yum install安裝,通常這兩個系統自帶
二、在/home下新建文件夾hadoop,而後經過FlashFXP工具將下載好的hadoop壓縮包上傳至此文件夾下,使用tar命令解壓
三、在解壓後的文件下修改配置
(1)、設置JAVA_HOME環境變量(個人JDK安裝目錄爲/home/jdk/jdk1.8.0_73/)
vi命令編輯etc/hadoop/hadoop-env.sh,找到相應位置修改以下:
# The java implementation to use.
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/home/jdk/jdk1.8.0_73
(2)、編輯文件etc/hadoop/core-site.xml文件,指定默認文件系統和工做空間(如今還路徑下尚未tmp文件夾,執行完hdfs格式化後即可看到相關文件)
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-2.7.3/tmp/</value>
</property>
</configuration>
(3)、編輯文件etc/hadoop/hdfs-site.xml文件,設置文件副本數,也就是文件分割成塊後,要複製塊個數(因爲此處就本機一個節點,僞分佈式,因此就配置爲1,文件自己,不須要副本)
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
(4)、編輯文件etc/hadoop/mapred-site.xml文件,此文件其實不存在,二存在mapred-site.xml.template,因此執行命令mv mapred-site.xml.template mapred-site.xml修改此文件名,指定資源調度框架
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
(5)、編輯文件etc/hadoop/yarn-site.xml文件,yarn也是分佈式管理的,因此配置一個主服務器;而後還要配置中間數據調度的機制
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
四、配置完成後,格式化hdfs系統
hadoop命令通常在bin文件夾下,因此要執行相關命令要在bin目錄下進行操做,爲了之後方便,因此要先把hadoop的bin目錄配置到環境變量中,還有些命令在sbin目錄中,因此也要配置到環境變量
vi /etc/profile環境變量部分代碼以下
export JAVA_HOME=/home/jdk/jdk1.8.0_73
export HADOOP_HOME=/home/hadoop/hadoop-2.7.3/
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
保存後記得用命令source /etc/profile配置當即生效
(執行前能夠看下hadoop安裝目錄下不存在tmp文件夾)而後執行hadoop namenode -format命令,會發現之前hadoop安裝路徑下不存在tmp文件夾,如今已經有了
五、啓動HDFS(sbin下有start-dfs.sh)
HDFS是分佈式系統,因此啓動HDFS時,會啓動配置的各個服務器節點,包括本機,在啓動過程當中是經過ssh遠程操做的,因此在不作特殊配置下,每次啓動到節點(包括本機)相關操做時,都要輸入密碼,若是想避免每次都輸入密碼,可執行下面命令
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 0600 ~/.ssh/authorized_keys
執行start-dfs.sh啓動HDFS(因爲配置了環境變量,因此能夠直接執行,不用切換到sbin目錄下)
啓動完後jps命令能夠查看正在啓動的java服務
[root@localhost bin]# jps
28800 SecondaryNameNode
28619 DataNode
28524 NameNode
29068 Jps
[root@localhost bin]#
netstat -nltp命令查看所監聽的端口
[root@localhost bin]# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:50090 0.0.0.0:* LISTEN 28800/java
tcp 0 0 192.168.36.133:1521 0.0.0.0:* LISTEN 2485/tnslsnr
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 2397/dnsmasq
tcp 0 0 0.0.0.0:50070 0.0.0.0:* LISTEN 28524/java
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1080/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1084/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2263/master
tcp 0 0 0.0.0.0:50010 0.0.0.0:* LISTEN 28619/java
tcp 0 0 0.0.0.0:50075 0.0.0.0:* LISTEN 28619/java
tcp 0 0 127.0.0.1:38242 0.0.0.0:* LISTEN 28619/java
tcp 0 0 0.0.0.0:50020 0.0.0.0:* LISTEN 28619/java
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 28524/java
tcp6 0 0 :::22 :::* LISTEN 1080/sshd
tcp6 0 0 ::1:631 :::* LISTEN 1084/cupsd
tcp6 0 0 :::23 :::* LISTEN 1087/xinetd
tcp6 0 0 ::1:25 :::* LISTEN 2263/master
tcp6 0 0 :::36794 :::* LISTEN 2558/ora_d000_orcl
[root@localhost bin]#
NameNode和DataNode是經過9000端口通訊的
50070端口是提供的一個Web頁面,個人系統ip是192.168.36.133,訪問網址http://192.168.36.133:50070/可查看效果
六、啓動yarn(yarn也是集羣的)
執行start-yarn.sh命令(在sbin文件夾下),若是前面沒有配置ssh免登陸,也是要輸入登陸密碼的。執行jps命令查看啓動的Java服務,ResourceManager已啓動
[root@localhost home]# jps
4080 Jps
3121 DataNode
3320 SecondaryNameNode
3672 ResourceManager
3768 NodeManager
3021 NameNode
[root@localhost home]#
到此已經配置啓動完了,下一節開始使用