標籤:
實驗平台:
Virtual Box 4.3.24
CentOS7
JDK 1.8.0_60
Hadoop 2.6.0
Hadoop基本安裝配置主要包括以下幾個步驟:
1)建立Hadoop使用者
2)安裝Java
3)設定SSH登陸許可權
4)單機安裝配置
5)偽分布式安裝配置
1.1 建立Hadoop使用者
linux建立使用者的命令是useradd,設定密碼的命令是passwd
在CentOS下,首先我們通過useradd命令建立一個Hadoop使用者組,它的密碼也是Hadoop:
useradd hadoop #設定hadoop使用者組passwd hadoop #配置hadoop使用者組的密碼
在/home檔案夾下,出現了一個hadoop檔案夾
1.2 安裝JDK
到oracle官網下載一個jdk。並複製到/usr/lib/jvm下
cp jdk-8u60-linux-x64.tar.gz /usr/lib/jvm
接著解壓縮
tar -zxvf jdk-8u60-linux-x64.tar.gz
z表示解壓gzip屬性的
x表示解壓,c表示壓縮
v表示顯示過程
f表示接檔案名字
用編輯器開啟.bashrc檔案:
vi ~/.bashrc
在第一行加入
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_60
export JAVA_BIN=$JAVA_HOME/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH
接著還要使剛才的更改生效:
source ~/.bashrc
使用echo命令查看環境變數:
[[email protected] jvm]# echo $JAVA_HOME/usr/lib/jvm/jdk1.8.0_60
配置成功,可以用java -version命令查看jdk是否安裝成功
1.3 配置SSH
CentOS7預設安裝了OpenSSH(client),我們只要啟動就好了。在shell下鍵入以下命令:
service sshd start
我們還要安裝ssh server,在shell下執行:
yum install openssh-server
安裝完後可以使用命令ssh localhost來ssh登陸本機,由於是首次登陸,會出現如下提示
按照提示輸入yes,然後輸入使用者hadoop的密碼,就可以登陸本機了。但這樣每次都要輸入密碼,我們需要把ssh配置成不要求輸入密碼也能訪問。
鍵入exit推出剛才建立的連結
產生SSH密鑰:
[[email protected] hadoop]# ssh-keygen -t rsaGenerating public/private rsa key pair.Enter file in which to save the key (/root/.ssh/id_rsa): #直接斷行符號Enter passphrase (empty for no passphrase): #直接斷行符號Enter same passphrase again: #直接斷行符號Your identification has been saved in /root/.ssh/id_rsa.Your public key has been saved in /root/.ssh/id_rsa.pub.The key fingerprint is:93:6c:b7:39:e7:06:7f:13:d3:65:5a:47:5e:43:f3:6a [email protected]The key‘s randomart image is:+--[ RSA 2048]----+| .o || .=|| o+|| . . .*|| S . E=o|| . o.o .+ .|| +o. o || +o o || ... . |+-----------------+
產生密鑰成功,密鑰被放在/root/.ssh/id_rsa.pub位置。接著將密鑰加入授權
cd /root/.sshcp id_rsa.pub authorized_keys #將剛才產生的密鑰加入授權
接著再執行ssh localhost命令,可以發現已經不需要再輸入登陸密碼了
1.4 安裝hadoop
把下載好的hadoop壓縮包(注意是binary檔案,不要下成source了)解壓到/usr/local目錄下
tar -zxvf ./hadoop-2.6.0.tar.gz -C /usr/local # 解壓到/usr/local中
將得到的檔案夾改名為hadoop
mv ./hadoop-2.6.0/ ./hadoop
進入hadoop檔案夾下的bin檔案夾,可以通過hadoop version命令查看是否安裝成功
,hadoop已經安裝成功。接著我們可以運行hadoop官方的例子來測試功能是否正常,我們運行WordCount的例子來檢驗hadoop是否安裝成功。首先在hadoop目錄下建立input檔案夾來存放輸入資料;然後將./etc/hadoop/下的設定檔拷貝到input檔案夾中;接著在hadoop目錄下建立output檔案夾,用來存放輸出資料。
mkdir input
cp etc/hadoop/*.xml inputmkdir output
最後執行如下代碼,調用了hadoop的grep功能:
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output ‘dfs[a-z.]+‘
接著查看輸出資料的內容
cat ./output/*
運行上面命令後可以得到以下結果
1 dfsadmin
1.5 hadoop偽分布式配置
偽分布式安裝時指在一台機器上類比一個小的叢集。當Hadoop在單節點上以偽分布式的方式運行時,Hadoop 進程以分離的 Java 進程來運行,節點既作為 NameNode 也作為 DataNode。不管是真分布式還是偽分布式都需要通過設定檔對各組件的協同工作進行設定,對於偽分布式配置,我們需要修改core-site.xml,hdfs-site.xml和mapred-site-xml(最新hadoop沒有這個檔案)這三個檔案。Hadoop 的設定檔位於 /usr/local/hadoop/etc/hadoop/ 中。
修改core-site.xml,將
<configuration></configuration>
改為
<configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property></configuration>
<name>標籤代表了配置項的名字,<value>項設定的是配置的值。對於core-site.xml檔案,我們只需要在其中制定HDFS的地址和連接埠號碼,連接埠號碼按照官方文檔配置為9000即可。然後我們修改hdfs-site.xml檔案。修改後如下:
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property></configuration>
配置完成後,首先需要初始設定檔案系統,由於hadoop的很多工作是在內建的HDFS檔案系統上完成的,因此需要將檔案系統初始化以後才能進一步開始計算任務,在bin目錄下執行namenode的格式化:
./hdfs namenode -format
15/10/10 19:28:30 INFO util.ExitUtil: Exiting with status 0
15/10/10 19:28:30 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at localhost/127.0.0.1
************************************************************/
退出狀態為0表示初始化成功,如果為1表示格式化失敗。
接著開啟命名節點和資料節點的守護進程:
啟動完成後,輸入jps命令就可以查看是否啟動成功,如果啟動成功,將會看到3個進程:
Jps、NameNode、DataNode和SecondaryNameNode
成功啟動後,可以訪問 Web 介面 http://localhost:50070 來查看 Hadoop 的資訊。
上面單機執行個體中我們用grep讀取的是本機資料,而在偽分布式中我們讀取的則是HDFS中的資料,為此,我們需要建立一個HDFS檔案系統。
bin/hdfs dfs -mkdir -p /user/hadoop/input
由於建立的是hadoop檔案系統,在linux的檔案系統下不會顯示。 接著把etc/hadoop 下的所有檔案拷貝到HDFS檔案夾input中去
bin/hdfs dfs -put etc/hadoop/*.xml /user/hadoop/input
複製完成後,可以通過如下命令查看檔案清單:
bin/hdfs dfs -ls /user/hadoop/input
參考:
http://www.powerxing.com/install-hadoop/
http://www.centoscn.com/CentOS/config/2013/0926/1713.html
《大資料技術原理與應用》 林子雨著
Hadoop偽分布式的搭建