一、hadoop基本介紹
hadoop優點
1.高可靠性:hadoop按位存儲和處理資料
2.高擴充性:hadoop是在計算機叢集中完成計算任務,這個叢集可以友善的擴充到幾千台
3.高效性:hadoop能夠在節點之間動态地移動資料,并保證各個節點的動态平衡,是以處理速度快
4.高容錯性:hadoop能夠自動儲存資料的多個副本,并且能夠自動将失敗的任務重新配置設定
5.低成本:hadoop是開源的,叢集是由廉價的pc機組成
hadoop架構群組件
hadoop是一個分布式系統基礎架構,底層是hdfs(hadoop distributed file system)分布式檔案系統,它存儲hadoop叢集中所有存儲節點上的檔案(64mb塊),hdfs上一層是mapreduce引擎(分布式計算架構),對分布式檔案系統中的資料進行分布式計算。
1.hdfs架構
namenode:hadoop叢集中隻有一個namenode,它負責管理hdfs的目錄樹和相關檔案的中繼資料資訊
sencondary namenode:有兩個作用,一是鏡像備份,二是日志與鏡像定期合并,并傳輸給namenode
datanode:負責實際的資料存儲,并将資訊定期傳輸給namenode
2.mapreduce架構(hadoop0.23以後采用mapreduce v2.0或yarn)
yarn主要是把jobtracker的任務分為兩個基本功能:資源管理和任務排程與監控,resourcemanager和每個節點(nodemanager)組成了新處理資料的架構。
resourcemanager:負責叢集中的所有資源的統一管理和配置設定,接受來自各個節點(nodemanager)的資源彙報資訊,并把這些資訊按照一定的政策配置設定給各種應用程式(applicationmaster)。
nodemanager:與applicationmaster承擔了mr1架構中的tasktracker角色,負責将本節點上的資源使用情況和任務運作進度彙報給resourcemanager。
mapreduce v1.0架構(圖1)
mapreduce v2.0架構(圖2)
環境介紹:
master-hadoop 192.168.0.201
slave1-hadoop 192.168.0.202
slave2-hadoop 192.168.0.203
參考官方文檔:http://hadoop.apache.org/docs/r2.3.0/hadoop-project-dist/hadoop-common/clustersetup.html
hadoop三種運作方式:單節點方式(單台)、單機僞分布方式(一個節點的叢集)與完全分布式(多台組成叢集)
二、準備環境
1.hadoop是用java開發的,必須要安裝jdk1.6或更高版本
2.hadoop是通過ssh來啟動slave主機中的守護程序,必須安裝openssh
3.hadoop更新比較快,我們采用最新版hadoop2.3來安裝
4.配置對應hosts記錄,關閉iptables和selinux(過程略)
5.建立相同使用者及配置無密碼認證
三、安裝環境(注:三台配置基本相同)
1.安裝jdk1.7
1
2
3
4
5
6
7
8
9
10
11
12
<code>[root@master-hadoop ~]</code><code># tar zxvf jdk-7u17-linux-x64.tar.gz</code>
<code>[root@master-hadoop ~]</code><code># mv jdk1.7.0_17/ /usr/local/jdk1.7</code>
<code>[root@slave1-hadoop ~]</code><code># vi /etc/profile #末尾添加變量</code>
<code>java_home=</code><code>/usr/local/jdk1</code><code>.7</code>
<code>path=$path:$java_home</code><code>/bin</code>
<code>classpath=$java_home</code><code>/lib</code><code>:$java_home</code><code>/jre/lib</code>
<code>export</code> <code>java_home path classpath </code>
<code>[root@slave1-hadoop ~]</code><code># source /etc/profile</code>
<code>[root@slave1-hadoop ~]</code><code># java -version #顯示版本說明配置成功</code>
<code>java version</code><code>"1.7.0_17"</code>
<code>java(tm) se runtimeenvironment (build 1.7.0_17-b02)</code>
<code>java hotspot(tm) 64-bitserver vm (build 23.7-b01, mixed mode)</code>
2.建立hadoop使用者,指定相同uid
<code>[root@master-hadoop ~]</code><code># useradd -u 600 hadoop</code>
<code>[root@master-hadoop ~]</code><code># passwd hadoop</code>
<code>changing password </code><code>for</code> <code>userhadoop.</code>
<code>new password:</code>
<code>retype new password:</code>
<code>passwd</code><code>: all authenticationtokens updated successfully.</code>
3.配置ssh無密碼登入(注:master-hadoop本地也要實作無密碼登入)
13
14
15
16
17
18
<code>[root@master-hadoop ~]</code><code># su - hadoop</code>
<code>[hadoop@master-hadoop ~]$ </code><code>ssh</code><code>-keygen -t rsa </code><code>#一直回車生成密鑰</code>
<code>[hadoop@master-hadoop ~]$ </code><code>cd</code> <code>/home/hadoop/</code><code>.</code><code>ssh</code><code>/</code>
<code>[hadoop@master-hadoop .</code><code>ssh</code><code>]$ </code><code>ls</code>
<code>id_rsa id_rsa.pub</code>
<code>[hadoop@slave1-hadoop ~]$ </code><code>mkdir</code> <code>/home/hadoop/</code><code>.</code><code>ssh</code> <code>#登入兩台建立.ssh目錄</code>
<code>[hadoop@slave2-hadoop ~]$ </code><code>mkdir</code> <code>/home/hadoop/</code><code>.</code><code>ssh</code>
<code>[hadoop@master-hadoop .</code><code>ssh</code><code>]$ </code><code>scp</code> <code>id_rsa.pub hadoop@slave1-hadoop:</code><code>/home/hadoop/</code><code>.</code><code>ssh</code><code>/</code>
<code>[hadoop@master-hadoop .</code><code>ssh</code><code>]$ </code><code>scp</code> <code>id_rsa.pub hadoop@slave2-hadoop:</code><code>/home/hadoop/</code><code>.</code><code>ssh</code><code>/</code>
<code>[hadoop@slave1-hadoop ~]$ </code><code>cd</code> <code>/home/hadoop/</code><code>.</code><code>ssh</code><code>/</code>
<code>[hadoop@slave1-hadoop .</code><code>ssh</code><code>]$ </code><code>cat</code> <code>id_rsa.pub >> authorized_keys</code>
<code>[hadoop@slave1-hadoop .</code><code>ssh</code><code>]$ </code><code>chmod</code> <code>600 authorized_keys</code>
<code>[hadoop@slave1-hadoop .</code><code>ssh</code><code>]$ </code><code>chmod</code> <code>700 ../.</code><code>ssh</code><code>/ </code><code>#目錄權限必須設定700</code>
<code>[root@slave1-hadoop ~]</code><code># vi /etc/ssh/sshd_config #開啟rsa認證</code>
<code>rsaauthentication </code><code>yes</code>
<code>pubkeyauthentication </code><code>yes</code>
<code>authorizedkeysfile .</code><code>ssh</code><code>/authorized_keys</code>
<code>[root@slave1-hadoop ~]</code><code># service sshd restart</code>
四、hadoop的安裝與配置(注:三台伺服器配置一樣,使用scp複制過去)
<code>[root@master-hadoop ~]</code><code># tar zxvf hadoop-2.3.0.tar.gz -c /home/hadoop/</code>
<code>[root@master-hadoop ~]</code><code># chown hadoop.hadoop -r /home/hadoop/hadoop-2.3.0/</code>
<code>[root@master-hadoop ~]</code><code># vi /etc/profile #添加hadoop變量,友善使用</code>
<code>hadoop_home=</code><code>/home/hadoop/hadoop-2</code><code>.3.0/</code>
<code>path=$path:$hadoop_home</code><code>/bin</code><code>:$hadoop_home</code><code>/sbin</code>
<code>export</code> <code>hadoop_home path</code>
<code>[root@master-hadoop ~]</code><code># source /etc/profile</code>
1. hadoop-env.sh設定jdk路徑
<code>[hadoop@master-hadoop ~]$ </code><code>cd</code> <code>hadoop-2.3.0</code><code>/etc/hadoop/</code>
<code>[hadoop@master-hadoop hadoop]$ </code><code>vi</code> <code>hadoop-</code><code>env</code><code>.sh</code>
<code>export</code> <code>java_home=</code><code>/usr/local/jdk1</code><code>.7/</code>
2.slaves設定從節點
<code>[hadoop@master-hadoop hadoop]$ </code><code>vi</code> <code>slaves</code>
<code>slave1-hadoop </code>
<code>slave2-hadoop</code>
3.core-site.xml
19
20
21
22
23
24
25
26
27
28
29
<code><configuration></code>
<code><property></code>
<code><name>fs.defaultfs<</code><code>/name</code><code>></code>
<code><value>hdfs:</code><code>//master-hadoop</code><code>:9000<</code><code>/value</code><code>></code>
<code><</code><code>/property</code><code>></code>
<code><name>io.</code><code>file</code><code>.buffer.size<</code><code>/name</code><code>></code>
<code><value>131072<</code><code>/value</code><code>></code>
<code><name>hadoop.tmp.</code><code>dir</code><code><</code><code>/name</code><code>></code>
<code><value></code><code>file</code><code>:</code><code>/home/hadoop/tmp</code><code><</code><code>/value</code><code>></code>
<code><</code><code>/configuration</code><code>></code>
<code>4.hdfs-site.xml</code>
<code><name>dfs.namenode.name.</code><code>dir</code><code><</code><code>/name</code><code>></code>
<code><value></code><code>file</code><code>:</code><code>/home/hadoop/dfs/name</code><code><</code><code>/value</code><code>></code>
<code><name>dfs.namenode.data.</code><code>dir</code><code><</code><code>/name</code><code>></code>
<code><value></code><code>file</code><code>:</code><code>/home/hadoop/dfs/data</code><code><</code><code>/value</code><code>></code>
<code><name>dfs.replication<</code><code>/name</code><code>> </code><code>#資料副本數量,預設3,我們是兩台設定2</code>
<code><value>2<</code><code>/value</code><code>> </code>
6.yarn-site.xml
30
<code><name>yarn.resourcemanager.address<</code><code>/name</code><code>></code>
<code><value>master-hadoop:8032<</code><code>/value</code><code>></code>
<code><name>yarn.resourcemanager.scheduler.address<</code><code>/name</code><code>></code>
<code><value>master-hadoop:8030<</code><code>/value</code><code>></code>
<code><name>yarn.resourcemanager.resource-tracker.address<</code><code>/name</code><code>></code>
<code><value>master-hadoop:8031<</code><code>/value</code><code>></code>
<code><name>yarn.resourcemanager.admin.address<</code><code>/name</code><code>></code>
<code><value>master-hadoop:8033<</code><code>/value</code><code>></code>
<code><name>yarn.resourcemanager.webapp.address<</code><code>/name</code><code>></code>
<code><value>master-hadoop:8088<</code><code>/value</code><code>></code>
<code><name>yarn.nodemanager.aux-services<</code><code>/name</code><code>></code>
<code><value>mapreduce_shuffle<</code><code>/value</code><code>></code>
<code> </code><code><name>yarn.nodemanager.aux-services.mapreduce.shuffle.class<</code><code>/name</code><code>></code>
<code> </code><code><value>org.apache.hadoop.mapred.shufflehandler<</code><code>/value</code><code>></code>
7.mapred-site.xml
<code><name>mapreduce.framework.name<</code><code>/name</code><code>></code>
<code><value>yarn<</code><code>/value</code><code>></code>
<code><name>mapreduce.jobhistory.address<</code><code>/name</code><code>></code>
<code><value>master-hadoop:10020<</code><code>/value</code><code>></code>
<code><name>mapreduce.jobhistory.webapp.address<</code><code>/name</code><code>></code>
<code><value>master-hadoop:19888<</code><code>/value</code><code>></code>
五、格式化檔案系統并啟動
1.格式化新的分布式檔案系統(hdfs namenode -format)
2.啟動hdfs檔案系統并使用jps檢查守護程序是否啟動
可以看到master-hadoop已經啟動namenode和secondarynamenode程序,slave-hadoop已經啟動datanode程序說明正常。
3.啟動新mapreduce架構(yarn)
可以看到master-hadoop已經啟動resourcemanger程序,slave-hadoop已經啟動nodemanager程序說明正常。
4.檢視叢集狀态
5.通過web檢視資源(http://192.168.0.201:8088)
6、檢視hdfs狀态(http://192.168.0.201:50070)