一、Hadoop 簡介
Hadoop 是一個由 Apache 基金會所開發的分佈式系統基礎架構,它可以使用戶在不瞭解分佈式底層細節的情況下開發分佈式程序,充分利用集羣的威力進行高速運算和存儲。
從其定義就可以發現,它解決了兩大問題:大數據存儲、大數據分析。也就是 Hadoop 的兩大核心:HDFS 和 MapReduce。
-
HDFS(Hadoop Distributed File System)是可擴展、容錯、高性能的分佈式文件系統,異步複製,一次寫入多次讀取,主要負責存儲。
-
MapReduce 爲分佈式計算框架,包含map(映射)和 reduce(歸約)過程,負責在 HDFS 上進行計算
二、hadoop以及JDK的下載
JDK官方下載地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
我JDK雲盤鏈接:https://pan.baidu.com/s/1QDYb2smSdPt_hSpDBTdr0g
提取碼:u64i
hadoop官方鏈接:http://mirror.bit.edu.cn/apache/hadoop/common/ (這裏有所有的hadoop版本)
我的百度雲盤鏈接:https://pan.baidu.com/s/10T3YbaEmaPkcXi04idZtYw
提取碼:4iv0
裏面有一個詳細的搭建視頻,以及一個最新的版本,一個2.7版本的hadoop。由於個人後續學習原因,這裏搭建的爲2.7版本的hadoop
三、JDK的安裝及配置
hadoop搭建之前我們需要安裝jdk
-
將壓縮包放入xftp中,進去到JDK安裝包的目錄下,解壓 tar -zxvf jdk-8u211-linux-x64.tar.gz
-
配置環境變量:
export JAVA_HOME=/home/ubuntu/jdk1.8.0_211 (此路徑爲你jdk安裝目錄的路徑,就是之前創建的目錄路徑)
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH - 配置完後,重啓配置使其生效。source /etc/profile
- 分別輸入 :java -version,javac驗證是否成功
四、hadoop的搭建
- 將安裝包放入xftp中解壓(不能加壓後放入,可能會導致文件丟失,所以一定要將安裝包放入後再解壓),然後通過tar -zxvf 文件名.tar.gz 解壓 , 我的安裝包放在:/home/ubun/ 故應該進入該目錄下進行解壓 。解壓命令:tar -zxvf hadoop-2.7.6.tar.gz
-
配置hadoop的環境變量
在/etc/profile文件中添加如下語句:(進入/etc/profile命令:vim /etc/profile)
export HADOOP_HOME=/home/ubuntu/hadoop-2.7.6 (此路徑爲你hadoop解壓文件的路徑)
export PATH=$PATH:$JAVA_HOME:$HADOOP_HOME/bin
-
配置完後,重啓配置使其生效。source /etc/profile。
-
運行 hadoop輸出一長串信息,說明hadoop環境變量配置成功
-
修改hadoop中etc/hadoop目錄下hadoop-env.sh文件 ,將其中的JAVA_HOME改爲jdk安裝目錄,我們的jdk安裝目錄爲/home/ubuntu/jdk1.8.0_211。修改後如下圖所
-
修改hadoop中etc/hadoop/目錄下的core-site.xml文件。這個文件的詳解可以查看官網http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/core-default.xml 上的說明。我們先看看io.seqfile.local.dir配置項,這個是用來指定序列文件在合併期間存儲中間數據文件的本地目錄,而它的值是 ${hadoop.tmp.dir}/io/local。我們再看看這裏面引用的臨時文件目錄配置項 hadoop.tmp.dir,它的值爲 /tmp/hadoop-${user.name}。也就是說,默認情況下,文件合併期間產生的中間數據文件存放在臨時目錄/tmp/hadoop下。大家都知道這是一個臨時文件目錄,當我們再次啓動服務器的時候,該目錄下的文件就會清空,所以,爲了更久的保存數據,我們可以重新指定一個目錄,用來存儲這些數據文件。
我們在當前用戶目錄下創建tmp(mkdir tmp)目錄,路徑爲/home/ubuntu/tmp。打開core-site.xml文件路徑爲 //home/ubuntu/hadoop-2.7.6/etc/hadoop,如圖:在<configuration>中添加如下配置
(1)添加指定中間數據文件存放目錄的配置。
<property> <name>hadoop.tmp.dir</name> <value>/home/ubuntu/tmp</value> </property>
(2)添加指定默認文件系統名稱的配置。即,請求這個hdfs的URL地址。
<property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property>
-
添加完後,使用cat命令 ---> cat core-site.xml查看該文件信息,如下圖所示
-
修改hadoop中etc/hadoop目錄下的hdfs-site.xml文件。這個文件的詳解可以查看官網 http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml 上的說明。我們先看這個配置文件中的 dfs.replication 配置項,這個是用來指定hdfs的副本數的,默認值爲3。現在我們用的是僞分佈式,沒有那麼多副本節點,所以我們將其改爲1。打開hdfs-site.xml文件,在<configuration></configuration>標籤中添加如下代碼:
<property> <name>dfs.replication</name> <value>1</value> </property>
修改完後,如下圖所示:
9.設置ssh無密碼登錄。
現在當我們每次使用ssh localhost訪問的時候,都需要輸入密碼。此時我們可以改成無密碼登錄。執行 ssh-keygen -t rsa(使用rsa加密,還有一種方式是dsa)命令生成密鑰。
執行後會在用戶登錄目錄下生成.ssh目錄和id_rsa、id_rsa.pub個文件,如下圖所示:
將生成的公鑰加入到許可文件中,即將公鑰複製到 .ssh/authorized_keys中,這樣登錄就不需要密碼了。
進入/root/執行命令 cd /root/.ssh/
cp id_rsa.pub authorized_keys,完成後.ssh目錄中的文件如下:
10. 格式化文件系統。執行hadoop中bin目錄下的hdfs namenode -format 指令即可。
11.開啓節點守護進程。執行進入hadoop 中sbin目錄 cd home/ubuntu/hadoop-2.7.6/sbin/ 執行./start-dfs.sh 指令即可。此時,可能會提示 rcmd: socket: Permission denied(沒有則更好),如下圖所示:
此時,可以在/etc/pdsh目錄下新建 rcmd_default(touch rcmd_default)文件,然後用vi打開此文件,寫入ssh,然後回車(注意:一定要回車另起一行,不然會報錯)。然後在運行 sbin/start-dfs.sh 開啓守護進程。使用jps查看進程啓動情況,如下圖所示:
12.如果想全局啓動hadoop服務器,可以配置環境變量
export HADOOP_HOME=/home/ubuntu/hadoop-2.7.6
export PATH=${JAVA_HOME}/bin:$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
輸入命令:source /etc/profile 時環境變量立即生效
start-all.sh 啓動hadoop所有服務