1. 程式人生 > 實用技巧 >深入理解Hadoop讀書筆記-2

深入理解Hadoop讀書筆記-2

背景

公司的物流業務系統目前實現了使用storm叢集進行過門事件的實時計算處理,但是還有一個需求,我們需要儲存每個標籤上傳的每條明細資料,然後進行定期的標籤報表統計,這個是目前的實時計算框架無法滿足的,需要考慮離線儲存和計算引擎。

標籤的資料量是巨大的,此時儲存在mysql中是不合適的,所以我們考慮了分散式儲存系統HDFS。目前考慮的架構是,把每條明細資料儲存到HDFS中,利用Hive或者其他類SQL的解析引擎,定期進行離線統計計算。

查詢相關資料後,我下載了深入理解Haddoop這本書,從大資料的一些基礎原理開始調研,這一系列的筆記就是調研筆記。

系列文章:

深入理解Hadoop讀書筆記1

深入理解Hadoop

安裝部署-非CDH版本

總則:按照官網的文件一步一步部署即可,但是官網的太過簡略,下面會補充一些內容。

官方文件地址

前置準備

部署前需要做一些前置準備,需要jdk和ssh。

JDK

Hadoop2.7以上的需要JDK7,Hadoop之前的版本使用JDK6即可,使用OpenJDK 或者 Oracle (HotSpot)'s JDK/JRE都可以 。

安裝:sudo apt install openjdk-8-jdk-headless(Ubuntu下 )

ssh

SSH本質是一種遠端登陸的方式。我們可以通過兩種方式使用SSH,一種是直接 ssh 使用者名稱@主機 輸入使用者的密碼即可登入,但這種方式不夠安全,需要把自己的密碼告知對方;另一種是在被遠端的機器上建立一把鎖,提供給需要遠端登陸的人一把鑰匙,如果不想讓其登入,把鎖刪了即可。

安裝:SSH的安裝及使用

下面介紹通過第二種方式登入需要做的設定

首先需要在被登入的主機上,使用下面命令生成公鑰和私鑰,第一個等待輸入直接輸入直接鍵入enter繼續,第二個等待輸入,需要輸入一個訪問密碼,第三個等待輸入也輸入剛才相同的密碼。

ging@ubuntu:~$ ssh-keygen

這個命令會在 ~/.ssh目錄下生成兩個檔案:id_rsa是私鑰,id_rsa.pub是公鑰。

ging@ubuntu:~$ ls -l ~/.ssh
total 12
-rw------- 1 ging ging 2635 Aug 25 23:27 id_rsa
-rw-r--r-- 1 ging ging  565 Aug 25 23:27 id_rsa.pub

然後輸入下面的命令,把本地的ssh公鑰檔案,複製到另外主機的 ~/.ssh資料夾中,中間需要輸入對應主機使用者的密碼(因為這裡我就一臺虛擬機器,所以模擬自己登入自己的操作,直接複製給自己)

ging@ubuntu:~$ ssh-copy-id [email protected]
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/ging/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

這個命令後,會發現~/.ssh資料夾下出現了一個新的檔案 authorized_keys

ging@ubuntu:~$ ls -l ~/.ssh
total 16
-rw-rw-r-- 1 ging ging  565 Aug 26 00:01 authorized_keys
-rw------- 1 ging ging 2655 Aug 26 00:00 id_rsa
-rw-r--r-- 1 ging ging  565 Aug 26 00:00 id_rsa.pub

遠端登陸時,會提示需要輸入剛才第二步設定的私鑰檔案的訪問密碼,如果成功即可遠端登陸;如果連續三次輸入失敗,會要求輸入登入使用者的本地密碼,正確也可以登入

ging@ubuntu:~$ ssh [email protected]
Enter passphrase for key '/home/ging/.ssh/id_rsa': 
Enter passphrase for key '/home/ging/.ssh/id_rsa': 
Enter passphrase for key '/home/ging/.ssh/id_rsa': 
[email protected]'s password: 
Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-42-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage


221 updates can be installed immediately.
0 of these updates are security updates.
To see these additional updates run: apt list --upgradable

Your Hardware Enablement Stack (HWE) is supported until April 2025.
Last login: Tue Aug 25 23:23:34 2020 from 127.0.0.1

如果不希望對方登入我們的主機,直接把 ~/.ssh資料夾刪除即可,這樣對方就只能使用我們的本地密碼才能登入。

SSH的基本原理和使用介紹到這兒,接下來需要了解Hadoop叢集需要的SSH配置

ssh Hadoop叢集配置

Hadoop需要配置各個節點之間免密登入。

免密登入的操作步驟和上述的步驟類似,只不過在 ssh-keygen的步驟,不輸入私鑰檔案的訪問密碼,三次等待輸入都直接鍵入enter即可。

另外,需要在叢集的各個主機中的每個~/.ssh/authorized_keys 檔案中,都新增上其他主機的公鑰,這樣叢集中的所有機器就可以互相免密訪問了。

具體可以參考這個部落格:Hadoop叢集配置免密SSH登入方法

Hadoop安裝部署

未完待續...

參考資料

ssh的用法,關於公鑰和私鑰