下載地址:
http://hadoop.apache.org/releases.html
注意:
source表示源碼
binary表示二級制包(安裝包)
安裝模式
單機模式:不能使用HDFS,只能使用MapReduce,所以單機模式最主要的目的是在本機調試mapreduce代碼
偽分布式模式:用多個線程模擬多台真實機器,即模擬真實的分布式環境。
完全分布式模式:用多台機器(或啟動多個虛擬機)來完成部署集群。
安裝步驟:
0.關閉防火牆
執行:service iptables stop 這個指令關閉完防火牆后,如果重啟,防火牆會重新建立,所以,如果想重啟后防火牆還關閉,
需額外執行:chkconfig iptables off
1.配置主機名
執行:vim /etc/sysconfig/network
編輯主機名
注意:主機名里不能有下滑線,或者特殊字符 #$,不然會找不到主機導致無法啟動
這種方式更改主機名需要重啟才能永久生效,因為主機名屬於內核參數。
如果不想重啟,可以執行:hostname hadoop01。但是這種更改是臨時的,重啟后會恢復原主機名。
所以可以結合使用。先修改配置文件,然后執行:hostname hadoop01 。可以達到不重啟或重啟都是主機名都是同一個的目的
2.配置hosts文件
執行:vim /etc/hosts
3.配置免秘鑰登錄
在hadoop01節點執行:
執行:ssh-keygen
然后一直回車
生成節點的公鑰和私鑰,生成的文件會自動放在/root/.ssh目錄下
然后把公鑰發往遠程機器,比如hadoop01向hadoop01發送
執行:ssh-copy-id root@hadoop01
此時,hadoop02節點就是把收到的hadoop秘鑰保存在
/root/.ssh/authorized_keys 這個文件里,這個文件相當於訪問白名單,凡是在此白明白存儲的秘鑰對應的機器,登錄時都是免密碼登錄的。
當hadoop01再次通過ssh遠程登錄hadoop01時,發現不需要輸入密碼了。
在hadoop02節點執行上述上述步驟,讓hadoop02節點連接hadoop01免密碼登錄
4.配置自己節點登錄的免密碼登錄
如果是單機的偽分布式環境,節點需要登錄自己節點,即hadoop01要登錄hadoop01
但是此時是需要輸入密碼的,所以要在hadoop01節點上
執行:ssh-copy-id root@hadoop01
5.安裝和配置jdk
執行: vi /etc/profile
2)在尾行添加
#set java environment
JAVA_HOME=/usr/local/src/java/jdk1.7.0_51
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME PATH CLASSPATH
保存退出
3)source /etc/profile 使更改的配置立即生效
4)java -version 查看JDK版本信息。如顯示1.7.0證明成功。
6.上傳和解壓hadoop安裝包
執行:tar -xvf hadoop……
目錄說明:
bin目錄:命令腳本
etc/hadoop:存放hadoop的配置文件
lib目錄:hadoop運行的依賴jar包
sbin目錄:啟動和關閉hadoop等命令都在這里
libexec目錄:存放的也是hadoop命令,但一般不常用
最常用的就是bin和etc目錄
7.配置hadoop-env.sh
這個文件里寫的是hadoop的環境變量,主要修改hadoop的java_home路徑
切換到 etc/hadoop目錄
執行:vim hadoop-env.sh
修改java_home路徑和hadoop_conf_dir 路徑
然后執行:source hadoop-env.sh 讓配置立即生效
8.修改core-site.xml
在etc/hadoop目錄下
執行:vim core-site.xml
配置如下:
<configuration>
<!--用來指定hdfs的老大,namenode的地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:9000</value>
</property>
<!--用來指定hadoop運行時產生文件的存放目錄-->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/software/hadoop-2.7.1/tmp</value>
</property>
</configuration>
9.修改 hdfs-site .xml
配置如下:
<configuration>
<!--指定hdfs保存數據副本的數量,包括自己,默認值是3-->
<!--如果是偽分布模式,此值是1-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!--設置hdfs的操作權限,false表示任何用戶都可以在hdfs上操作文件-->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
10.修改 mapred-site.xml
這個文件初始時是沒有的,有的是模板文件,mapred-site.xml.template
所以需要拷貝一份,並重命名為mapred-site.xml
執行:cp mapred-site.xml.template mapred-site.xml
配置如下:
<configuration>
<property>
<!--指定mapreduce運行在yarn上-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn是資源協調工具,
11.修改yarn-site.xml
配置如下:
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<!--指定yarn的老大 resoucemanager的地址-->
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>
<property>
<!--NodeManager獲取數據的方式-->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
12.配置slaves文件
13.配置hadoop的環境變量
配置代碼:
JAVA_HOME=/home/software/jdk1.8
HADOOP_HOME=/home/software/hadoop-2.7.1
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export JAVA_HOME PATH CLASSPATH HADOOP_HOME
14.格式化namenode
為什么要格式化
執行:hadoop namenode -format
如果不好使,可以重啟linux
當出現:successfully,證明格式化成功
15. hadoop的啟動
切換到sbin目錄下, 執行start-dfs.sh, 啟動hadoop相關服務; 執行start-yarn.sh, 啟動yarn相關服務。