2013年11月18日 星期一

Hadoop Cluster 如何使用Ambari 安裝與啟用 Kerberos

圖片來源:自行製作

[2014.02.10 Update] 這篇文章是把KDC、Ambari 以及所有Service裝在一起,但是如果套用在真實full distributed cluster mode 這篇文章在安裝上就會出問題,請參考另一篇安裝Fully Distributed Hadoop Cluster by Ambari on Google Cloud Platform


接續Security for Hadoop - Data Encryption 這篇文章裡面提到的Kerberos ,如果你的Hadoop Cluster 沒有啟動Kerberos 的認證機制,其實根本是沒有安全防護可言的,所以今天這篇文章就要來分享如何利用Apache Ambari 啟動Kerberos 的認證機制。


測試環境:

A. HDP 2.x Ambari 1.4.1  (理論上 Ambari-1.2.5 以上版本都可使用)。
B. 把KDC 和 Hadoop Cluster 分開安裝 (全部裝在一個Sandbox 也可以)


1. Install package



1-1. 首先要先安裝一台Kerberos KDC  (Kerberos Key Distribution Center)
 
> yum install -y krb5-server krb5-libs krb5-auth-dialog krb5-workstation
 
   
1.2  On KDC client

 
> yum install -y krb5-libs krb5-workstation
 

2. 設定 KDC Server


2.1 設定 /etc/krb5.conf --- the same in all Kerberos workstation


[logging]
    default = FILE:/var/log/krb5libs.log
    kdc = FILE:/var/log/krb5kdc.log
    admin_server = FILE:/var/log/kadmind.log

[libdefaults]
     default_realm = LOCALDOMAIN (這邊注意一定要大寫)
     dns_lookup_realm = false
     dns_lookup_kdc = false
     ticket_lifetime = 24h
     renew_lifetime = 7d
     forwardable = true

[realms]
    LOCALDOMAIN = {
       default_domain = localdomain
       kdc = bdp-node1.localdomain
       admin_server = bdp-node1.localdomain
    }
 

[domain_realm]
    .localdomain = LOCALDOMAIN
    localdomain = LOCALDOMAIN



2.2 編輯 /var/kerberos/krb5kdc/kdc.conf

 
[kdcdefaults]
 
     kdc_ports = 88
     kdc_tcp_ports = 88

[realms]
 
     LOCALDOMAIN = {
      #master_key_type = aes256-cts
      acl_file = /var/kerberos/krb5kdc/kadm5.acl
      dict_file = /usr/share/dict/words
      admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
      supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
     }
 


2.3 編輯 /var/kerberos/krb5kdc/kadm5.acl

*/admin@LOCALDOMAIN     *



3. 在bdp-node1 啟動 KDC/kadmin 以及新增 admin principal


不過在第一次執行可能會遇到下面的問題

> service kadmin start
      Bug: kadmind: No such file or directory while initializing, aborting

3-1.解決方法要先Create KDC master key

> kdb5_util create -s
    Enter KDC database master key: [your password]

3-2. 然後建立一個管理權限的帳號

>  kadmin.local -q "addprinc root/admin"
    password: [your password]

Authenticating as principal root/admin@bdp-node1.localdomain with password.
WARNING: no policy specified for root/admin@bdp-node1.localdomain; defaulting to no policy
Enter password for principal "root/admin@bdp-node1.localdomain":
Re-enter password for principal "root/admin@bdp-node1.localdomain":
Principal "root/admin@bdp-node1.localdomain" created.

3-3. 重新啟動kdc Service

 
> service krb5kdc start
 

4. Copy /etc/krb5.conf to all Clients


5. using ambari-web to create keytab CSV file and save as keytabs.csv



5-1. 從Admin 的Menu 選擇Security的選項,可以看到Enable Security的選項


5-2. 按下Enable Security 後接下來就會出現下一步下一步的Wizard


5-3. 輸入你的Realm Name (記住要大寫),其他設定Ambari 都會幫你填好(除非你有特別要改什麼設定),把畫面卷到最下面按Next。



5-4. 接下來畫面就會顯示Hadoop Cluster 所有Service 角色該有的Keytab設定,確認無誤後,請先下載那個csv檔 (建議後面6~10都做完,再按apply )




6. cp /var/lib/ambari-server/resources/scripts/keytabs.sh /root/


keytabs.sh 是ambari 所提供用的script,利用這個script 和剛剛產生的keytabs.csv, 可以用來產生幫忙設定keytab的shell script (keytabs_create.sh)。

7. create the real keytabs creating scrupt


 
>chmod 755 keytabs.sh
>./keytabs.sh keytabs.csv > keytabs_create.sh

  

8. execute keytabs_create.sh to create keytabs


 
>chmod 755 keytabs_create.sh
>./keytabs_create.sh
>cp -raf xxxx/etc/security/keytabs /etc/security/
 

 

9. Checking: list all the created pricipals

 
>kadmin.local -q list_principals
 

10. Create a new user(howie) to access hdfs

 
>kadmin.local -q "addprinc howie"
  

當一切設定完成,你的Hadoop Cluster 才算是有了基本的安全防護



Referecne:
[1] 特別感謝Herb 大大贊助筆記
[2] Setting Up Kerberos for Use with Ambari , Apache Ambari
[3] HDP 2.x Setting Up Kerberos for Use with Ambari , Hortonworks
[4] Configuring Hadoop Security in CDH4
[5] Set up Kerberos Version 5 KDC to use AES encryption , IBM , 2007

 

2013年11月17日 星期日

知識分享回饋社群




圖片來源:wikimedia


今天早上看到這篇文章 - 五件在我靠程式吃飯之前就該知道的事 ,對於下面這段特別有感覺。(話說我的文章是不是也該嘗試來寫寫看xxx應該知道的幾件事...:P )。


我的生涯早期,我犯了一個錯誤,就是不怎麼去向社群尋求幫助,也不為他人提供幫助。我一向樂於幫助我的同事,也在不同的工作崗位上也非常善於交際,但活動範圍從來沒有超出過公司。
我在我的生涯中花了大量的時間,試圖在一個特定的公司進行投資,卻沒能將我的時間投資在我參與的軟體開發社群中。
我花了很多時間,做關於技術或者是最佳實踐的內部 presentation,而這些時間原本可以用來製作可以服務於社群的內容和材料,同時也能給我帶來工作上的認可。
我也犯了另一個錯誤,就是認為自己沒什麼有價值的東西去貢獻
我和很多剛入行的開發者聊過,有時候我覺得,比起我們這些”老油條“,他們有更多的東西去貢獻給社群,因為他們更理解其他初學者蛋疼的問題。
如果我可以重來一遍,我一定會在我的生涯中更早、更多地參與各種會議和使用者群。我會更早地開始寫部落格,並利用我的大部分學習時間去建立專案和資源,去幫助別人而不是只讀書。


看到上面那個 "認為自己沒有什麼有價值的東西去貢獻",真的很想大喊 "真的!! 好多人都這麼想 ,這真的是不對的!! "。

其實對於我們搞技術的人來說,最容易產生並且分享出來的內容就是學習筆記,小到操作Linux的指令集,大到安裝整個Hadoop Cluster,這些內容都是非常值得分享的,不要認為太簡單不重要,因為你什麼時候會幫到人你都不知道。

而且也唯有當你把資訊整理過後再分享出來,才能促成整個知識傳遞的正向循環,就像Open source 一樣,有人願意分享出來,然後其他人經過參考和學習後,可以激盪出更多的火花和更新想法產生更多更好的專案和程式。

話說在加入上一間公司之前,寫Bloger對我來說可能只是偶而用來記錄遊記和發發牢騷的地方,並沒有特定發文的週期,沒有壓力也沒有目標就很容易懶散,但是自從嘗試要開始透過Bloger宣傳自己開發的產品時(MeshCloud) ,我就變成就有了一個目標,就會開始努力寫文章,努力找梗,努力研究各種流量分析和SEO的方法,漸漸的每天固定監看各種流量和數值變成了一種習慣,在看文章和各種資料的時候也會想說 " 嗯~這個題材不錯可以拿來用...這個很有梗~ ",於是想梗和內容就變成了生活的一部分 。
 任何的梗和筆記都可以先收藏到筆記本裡,像我都是用Evernote把我的想法和筆記分類整理好,等到整理完或是哪天有空了就可以拿出來變成一篇可以分享的文章。




所以在這邊真心建議有剛好有看到這篇的朋友,真可以把你們手邊的筆記整理一下Release出來分享給大家看,幫助社群也幫助自己。(雖說大家也不一定真的有興趣看...XD 但是難說哪天就是會幫到人~:P )








2013年11月14日 星期四

頂級阿肥機使用一個月心得

圖片來源:沙塵暴


我真的覺得我家附近的落塵量頗大....(在我打掃時看到灰塵的心情大概就跟上圖一樣...)

話說真的是么壽,離[開箱文] Opure 頂級阿肥機入手也還不到一個月,昨天居然面板亮起了紅燈,提醒我該換前置慮網了(第一層)!!


研究了一下,他應該沒有Sensor可以偵測濾網有多髒,所以應該是以開啟時間來計時的,所以我從10/21開始24hr不停的運準的狀態,一個月就會要我換一次前置濾網!

那到底濾網的狀態如何呢?各位觀眾~~~  有沒有嚇死人~~~



下面是把反面折過來的對照組,有沒有很恐怖...囧rz...



根據產品介紹這一層的功用是:

活性碳濾網(建議每三個月更換一次或視環境狀況更換)並有效延長第二層
功效:可先行濾除大型塵埃、毛髮並去除空氣中的異味及揮發性有機化合物(VOC),並有效延長第二層及第三層濾網的使用壽命。

目前先用吸塵器把它清一清,但是感覺效果不是很好,為了保護後面HEPA的壽命,可能還是等滿一個月就把它換掉吧..(不知道可不可以洗....)

頂級阿肥機保護我們的肺~~QAQ