Hadoop安裝手冊1-基礎掃盲及準備工作
如今的Hadoop不僅聲名遠揚,影響力在apache的開源專案中也佔據著頭把交椅,國內外已有非常的成功應用。就目前來說,我對Hadoop整個體系連個大概的瞭解都說不上,個人倒是老早就想深入學習這套體系,本地磁碟上的安裝包更是早就下載好了,不過檔案儲存日期久遠的我自己都不好意思看。
值此新年伊始,欣喜地看到tigerfish老師第四期hadoop課程開班,我也趕緊報名參與,希望能在tigerfish老師的指導下,專心聽課認真做題,爭取在課程結業的時候,使自己對hadoop的瞭解能達到入門的水平。
Hadoop如今已經成長為一套體系,包含的元件眾多,要學習的知識很多,目前網際網路上的各類參考資料更是浩瀚,遇到這種情況很多朋友可能都在苦惱不知道該從何開始。就我來說倒沒有這方面的煩惱,從來這麼多年,接觸的東西也很多,但不管要學習什麼,我的學習路徑很像那些愛玩遊戲的孩子,接觸到一個感興趣的新東西,第一件事並不翻開它的說明書,而是先拿在手裡把玩一番,遇著不懂的就去找專門應對方案。等有大致瞭解之後,再會系統的閱讀官方提供的文件。
就Hadoop來說,在使用之前我們得首先有一套環境,因此這篇文章就算是我初次接觸Hadoop的一個記錄吧,先跟三思一起來了解到底什麼是hadoop,而後我們再親自動手,部署一套Hadoop叢集出來。
0、基礎部分掃盲
0.0 關於Hadoop
聽說過Doug Cutting沒,聽說過Lucene沒,聽說過Nutch沒,什麼,都沒聽過?哎,我真不知道該如何向你解釋。GOOGLE聽說過沒,這個總歸有印象了吧。為什麼要提GOOGLE呢,按照tigerfish老師所說,Hadoop就是山寨版的GOOGLE搜尋。
很多朋友都好奇GOOGLE/BAIDU這類搜尋引擎,是怎麼實現這麼高效的查詢速度,用的什麼資料庫等等,GOOGLE當然不會把自己的核心技術全面公開,即使對它最瞭解的非GOOGLE人士,也只能用連蒙帶猜的方式推測,因此能回答這個問題的人怕是不多的。不過我想說的是,HADOOP實現了一套類似GOOGLE的解決方案,如果你瞭解了它,那麼對於前面的問題想必也就有答案了。
前面提示的Nutch/Lucene又是怎麼回事兒呢,這部分內容暫不多扯,待後面我八卦些小道訊息再論。如有素材歡迎提供。
0.1 關於Hadoop家族
Hadoop的核心模組有兩個:HDFS(Hadoop Distributed Filesystem)和MapReduce,前者提供儲存,後者負責計算,可謂珠聯璧合,除此之後還有:
- Hbase:類似Google BigTable的分散式列式資料庫;
- Hive:基於Hadoop的資料倉儲工具,可以將結構化的資料檔案對映成資料庫表,並且提供SQL查詢功能,能夠將SQL語句轉換成MapReduce任務執行;
- Pig:與Hive類似也是基於hadoop的擴充套件專案,據說本意是為了簡化hadoop程式設計,提供一個高度抽象的資料處理方式,具體能夠多麼簡化我也不知道,有機會接觸了再說;
- ZooKeeper:分散式系統中的資源管理系統,可用於維護叢集中的資源排程;
其它也許還有,以後必將更多,Hadoop做為Apache基金會的頂級專案,自身也是高速發展。
0.2 hadoop的體系結構
Hadoop叢集中從大的粒度來看可以分為兩種角色:Master和Slave,其中master又可以分為主master和輔助master,一個節點屬於什麼角色,是由其提供的服務決定的:
- 主Master:主要提供下列服務:
- NameNode:管理HDFS名稱空間;
- SecondaryNameNode:輔助NameNode,可視為NameNode備份,儲存檢查點資訊,用於快速恢復NameNode;
- JobTracker:任務分配器;
- 輔助Master:
- SecondaryNameNode:
- Slave:
- DataNode:HDFS資料儲存節點;
- TaskTracker:任務處理器;
1、準備工作
正常情況下Hadoop叢集是由多個節點組成,每個節點做為其中的一個角色承擔不同的任務,比如說某個節點執行namenode,某些節點執行datanode等等,不過,使用者也可以將所有的應用都放在一個節點上,這種情況儘管也可以執行,其實就稱不上分散式了。可是,這種模式還不算極端,Hadoop還支援一種本地模式。
因此歸納一下,Hadoop叢集可以分三種部署方式:
- Local Mode:這種模式不需要守護程式,主要用於開發階段,本地除錯MapReduce程式比較方便,可以採用這種模式,環境部署和維護各方面都簡單;
- Pseudo-distributed Mode:看名字就知道了,偽分散式嘛,這種就是前面說的,所有任務都執行在同一個節點上,但是部署的時候還是按照分散式的方式部署,這種模式比較適用個人測試,它對環境的要求會低一些;
- Fully-Distributed Mode:標準模式,本文中的hadoop環境就是基於這種模式部署(一主兩從的最小規模);
1.1 初始化第一個節點
Hadoop執行需要JAVA環境,因此首先需要檢查系統中是否安裝的Java JDK:
[root@hdnode3 ~]# /usr/local/jdk1.7.0_09/bin/java -version
java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)如果沒有找到java的話,需要先安裝jdk。安裝包可以到SUN官網進行下載,或者直接通過yum進行安裝,我這裡是。
編譯本地hosts檔案:
# more /etc/hosts
127.0.0.1 localhost localhost.localdomain
::1 localhost localhost.localdomain
192.168.30.203 hdnode1
192.168.30.204 hdnode2
192.168.30.205 hdnode3建立使用者:
# useradd grid
# passwd grid
Changing password for user grid.
New password:
....................解壓縮hadoop安裝包到指定目錄下:
- # tar xvfz /data/software/hadoop-0.20.2.tar.gz -C /usr/local/
不知道哪裡下載安裝包?http://www.apache.org/dyn/closer.cgi/hadoop/common/ 這裡瞅一瞅。
修改資料夾的使用者屬主:
- # chown grid:grid /usr/local/hadoop-0.20.2/ -R
生成節點間金鑰,切換到grid使用者下操作:
[root@hdnode1 ~]# su - grid
[grid@hdnode1 ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/grid/.ssh/id_rsa):
Created directory ¨/home/grid/.ssh¨.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/grid/.ssh/id_rsa.
Your public key has been saved in /home/grid/.ssh/id_rsa.pub.
The key fingerprint is:
b6:17:4b:7a:e1:7d:04:e6:01:49:bc:61:72:fb:b6:f3 grid@hdnode1
The key¨s randomart image is:
+--[ RSA 2048]----+
| oo. |
| . *. |
| + ++ |
| oo o |
| S +.. . |
| . = =o. |
| o =.... |
| o o. |
| oE |
+-----------------+而後將公鑰資訊儲存到authorized_keys檔案中:
- [grid@hdnode1 ~]$ cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys
注意修改authorized_keys檔案許可權為600,否則節點間無密碼訪問仍有可能失敗。
配置grid使用者環境變數:
- [grid@hdnode1 ~]$ vi ~/.bash_profile
增加下列內容:
export JAVA_HOME=/usr/local/jdk1.7.0_09
export HADOOP_HOME=/usr/local/hadoop-0.20.2
PATH=${JAVA_HOME}/bin:${HADOOP_HOME}/bin:$PATH:$HOME/bin
1.2 初始化第二和第三節點
在hdnode2和hdnode3節點上分別重複上面的步驟。
1.3 配置節點間無密碼訪問
現在我們們先將hdnode2和hdnode3兩個節點的公鑰資訊全部輸出到hdnode1的authorized_keys檔案中:
[grid@hdnode1 ~]$ ssh hdnode2 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
The authenticity of host ¨hdnode2 (192.168.30.204)¨ can¨t be established.
RSA key fingerprint is 2d:e3:a1:b8:7e:5e:06:ae:04:55:73:73:13:24:94:c8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ¨hdnode2,192.168.30.204¨ (RSA) to the list of known hosts.
grid@hdnode2¨s password:
[grid@hdnode1 ~]$ ssh hdnode3 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
The authenticity of host ¨hdnode3 (192.168.30.205)¨ can¨t be established.
RSA key fingerprint is 2d:e3:a1:b8:7e:5e:06:ae:04:55:73:73:13:24:94:c8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ¨hdnode3,192.168.30.205¨ (RSA) to the list of known hosts.
grid@hdnode3¨s password:修改認證金鑰檔案的許可權為只有屬主使用者可讀寫:
- [grid@hdnode1 ~]$ chmod 600 .ssh/authorized_keys
然後將authorized_keys檔案複製到其它節點,直接執行scp命令就可以:
[grid@hdnode1 ~]$ scp ~/.ssh/authorized_keys hdnode2:/home/grid/.ssh/authorized_keys
grid@hdnode2¨s password:
authorized_keys 100% 1182 1.2KB/s 00:00
[grid@hdnode1 ~]$ scp ~/.ssh/authorized_keys hdnode3:/home/grid/.ssh/authorized_keys
grid@hdnode3¨s password:
authorized_keys 100% 1182 1.2KB/s 00:00接下來,如果有興趣的話可以在各節點試一下ssh連線其它節點,應該不需要輸入密碼了:
[grid@hdnode1 ~]$ ssh hdnode1 date
Tue Jan 29 16:09:49 CST 2013
[grid@hdnode1 ~]$ ssh hdnode2 date
Tue Jan 29 16:09:51 CST 2013
[grid@hdnode1 ~]$ ssh hdnode3 date
Tue Jan 29 16:09:53 CST 2013注意嘍,第一次訪問時會提示,將要訪問的節點加入到已知主機列表,這是正常的,輸入yes同意,後面再訪問就不會再提示了。
至此,我們們這個無密碼訪問就算配置好了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-756807/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL 基礎知識掃盲SQL
- OGG安裝準備工作
- PYTHON-基礎掃盲1Python
- 掃盲:Hadoop分散式檔案系統(HDFS)基礎概念講解!Hadoop分散式
- 安裝 GPFS 及配置準備
- Hadoop安裝手冊2-Hadoop環境配置Hadoop
- Java基礎知識掃盲(四)——泛型Java泛型
- MySql安裝及整合Hive手冊MySqlHive
- 安裝ArchLinux到U盤(一)準備工作Linux
- Hadoop安裝手冊4-新增與刪除Hadoop節點Hadoop
- Openfiler+RAC的安裝之六--安裝前的準備工作
- BIEE安裝前準備及注意事項
- Mysql安裝及基礎配置MySql
- Linux系統(三)系統基礎掃盲大全Linux
- Hadoop安裝後的叢集基準測試Hadoop
- Linux 安裝11g RAC 前準備工作Linux
- aix5.3 安裝oracle11g 準備工作AIOracle
- oracle安裝實施準備工作郵件通知模板Oracle
- RHEL6安裝ORACLE11G準備工作Oracle
- 玩轉無線路由之DD-WRT基礎掃盲路由
- Hbase安裝手冊
- Hive安裝手冊Hive
- RAC安裝手冊
- 【Mac】Docker安裝及基礎使用MacDocker
- Openfire安裝準備-MySQL資料庫準備MySql資料庫
- websocket 二進位制資料傳輸基礎準備工作Web
- 五分鐘掃盲:程式與執行緒基礎必知執行緒
- 【mac】ansible安裝及基礎使用Mac
- Erlang安裝手冊-windowsWindows
- GP完整安裝手冊
- RAC安裝之一 安裝前準備
- KVM之一:安裝準備(基於CentOS6.7)CentOS
- 程式設計師必備:技術面試準備手冊程式設計師面試
- 建立本地yum軟體源,為本地Package安裝Cloudera Manager、Cloudera Hadoop及Impala做準備PackageCloudHadoop
- 「掃盲」 ElasticsearchElasticsearch
- Promise掃盲Promise
- HTML掃盲HTML
- Windows環境下達夢資料庫安裝及解除安裝手冊Windows資料庫