2015年11月3日 星期二

筆記Guardian Grid研究 - Grid介紹


GridGuardian新開發的image  management system,目前開放成Open Sourcehttps://github.com/guardian/grid)在GitHub上。


簡介
Guardian舊的image  management system已運行超過15年過於老舊,對於一直提出的需求,若要新增功能或修改原系統將導致後續維護與修改成本的提高且系統會越來越複雜,最後他們想要打造一個新的image  management systemGuardian在引進外面廠商的系統與自行開發中進行抉擇,提出了以下的需求。
  • Ingest and index all our images past, present and future
  • Very fast and powerful search
  • User upload, metadata editing, cropping, publishing of optimised assets
  • Rights management, historical usage records
  • Collaboration workflows
  • In-browser experience from anywhere
  • Integration with all our internal tools (Composer CMS, fronts editing tool, InDesign for print, etc)
  • Deployable to the AWS cloud
引進外廠系統固然方便快速,但若要符合內部的作業程序、整體需求、使用者操作習慣與介接其他系統,成本不小,光買進外廠系統就是一大筆開銷,故決定自行開發。約莫2014年初,Project開始起步時,先由一位研究人員採用proof-of-concept的方式花了4個星期開發出了雛型系統,在Project正式通過審核後,系統開發人員成長到四位,並加上了一位group product manager和一位UX architect。

啟用後約莫8個月,Grid管理了約45%已在媒體或紙媒中使用的圖片,擁有超過3百萬張的image,平均一天新增約2萬張新圖片。由他們的KPI Dashboard可看出圖片使用率一直在成長。
在開發時團隊參考了developer anarchyprevious experiments in development processes的內容,團隊與所有使用者一起工作並了解他們的真正需求,並採用敏捷開發法,降低Project產製時程。

技術

Grid系統採用microservice architecture設計,Server端為Scala/Play Framework開發,並利用Amazon SNS/SQS進行queue管理,搜尋部分交由Elasticsearch,儲存則由Amazon S3負責,imagemetadata則存在Amazon DynamoDB。每個service皆實作 hypermedia APIs,格式為Guardianargo-rest project訂定的 argo media-typemedia可以操作的動作由一個requet取得actionURLURL皆以REST來設計。
Client端引入AngularJS來開發,在與Server hypermedia APIs介接採用argo-rest projecttheseus javascript library,至於javascriptlibrary管理與載入則使用JSPM/SystemJS

測試建構
因一些app啟動時的驗證問題,無法順利執行,尚與Guardian工程師討論中。以下為看source code猜測每個compoment負責的工作。

Kahuna
使用者介面。

Media API
介接各service與提供action URL給前端。

Reaper
Media API配合,整理、分類image列表供輸出。 Ex. 是否為過去20天的image

Cropper
儲存、讀取image原檔。

Metadata
metadata的新修改動作。

ImgOps
GD Library的執行component,製作縮圖。

Loader
讀寫S3縮圖的儲存空間。

FTP watcher
FTP空間與Grid的介接程式。

Thrall
讀取SNS/SQS寫入Elastic search,類似worker patternworker


參考


2015年10月2日 星期五

筆記Apache NiFi(二) - 範例自動Twitter Streaming API與存檔


基本兩個Processor範例Twitter Streaming API接到資料後將json儲存在本機硬碟裡。


1. 至Application Management申請Twitter APP
a. Application Management
https://apps.twitter.com
b. Create New APP
c. 鍵入資料

d. 至App頁面的Keys and Access Tokens分頁

e. Create my access token
f. 取得所需之Consumer KeyConsumer SecretAccess TokenAccess Token Secret


2. 開啟NiFi Web UI
http://localhost:8080/nifi/

3. 建立資料輸入Processor
a. 拉出一個Processor

b. 選擇GetTwitter

c. 右鍵點選Configure

d. 設定資料
i. 輸入tokenkey
ii. 選擇twitter filter的參數,範例為選擇Filter,其他Streaming API用法請參考 https://dev.twitter.com/streaming/overview
iii. Terms to Filter On 空格代表AND ,』代表OR ex. he was, boy』則為『(he AND was) OR boy
iv. Scheduling分頁可選擇TimerCRON方式,如不選擇預設為TimerRun schedule0代表一個task完成後不等待直接下一個taskRun duration為執行完成後會延遲的時間,0代表只會執行一次且不延遲。



4. 建立資料輸出Processor
a. 拉出一個Processor
b. 選擇PutFile

c. 右鍵點選Configure

d. 設定資料
i. Directory範例設為/data/tweets/

e. 選擇為失敗或成功都接收


5. 建立輸入與輸出連結

6. 啟動Processor

7. 檢查資料



筆記Apache NiFi(一) - NiFi架設


Apache NiFi根據官方說法是一個功能強大、操作便利的資料數據處理data flow系統,內含一個Web UI介面建立data flow的Processor與Scheduling。目前為0.3.0版本,尚處於成長階段,故未有使用者登入、管理功能。不過經Johnny測試後的確不用再寫許多程式碼便可操作許多資料流。以下介紹如何架設一個Nifi系統。


*準備好一台Linux,範例建立在CentOS 6上。


1. 下載nifi Binaries (root)
a. 官網下載nifi-0.3.0-bin.tar.gz https://nifi.apache.org/download.html
b. 解壓縮
tar -xvzf nifi-0.3.0-bin.tar.gz 

2. 移至nifi-0.3.0/bin資料夾 (root)
cd nifi-0.3.0/bin

3. 啟動NiFi
./nifi.sh start

4. 關閉NiFi
./nifi.sh stop

5. 檢查NiFi狀態
./nifi.sh status

6. 或者Installing as a Service
a. Install
./nifi.sh install dataflow
b. Start
sudo service nifi start
c. Stop
sudo service nifi stop
d. Status
sudo service nifi status

NiFi Web UI
http://localhost:8080/nifi/




2015年10月1日 星期四

筆記Hortonworks叢集架設(四) - 叢集加上Hue (Hadoop Web UI 管理工具)



1. Hue需安裝在可Client HDFS的電腦上。

2. 安裝編譯相關程式
yum -y install ant \
asciidoc \
cyrus-sasl-devel \
cyrus-sasl-gssapi \
gcc \
gcc-c++ \
krb5-devel \
libtidy \
libxml2-devel \
libxslt-devel \
maven \
mysql \
mysql-devel \
openldap-devel \
python-devel \
sqlite-devel \
openssl-devel \

2. 下載Hue 3.8.1 (root)
wget https://dl.dropboxusercontent.com/u/730827/hue/releases/3.8.1/hue-3.8.1.tgz

3. 解壓縮Hue (root)
tar zxvf hue-3.8.1.tgz

4. Install Hue (root)
a. 移至資料夾
cd hue-3.8.1
b. Install
make install

5. 新增 Hue使用者與Hue群組 (root)
a. 新增群組
groupadd hue
b. 新增使用者
useradd -g hue hue

6. 修改權限 (root)
chown -R hue:hue /usr/local/hue

7. 修改 Configuration (ClusterAmbari修改)
a. HDFS
i. 修改General, 確認為打勾
ii, Custom core-site新增以下兩個參數與值
Key : hadoop.proxyuser.hue.groups , Value : *
Key : hadoop.proxyuser.hue.hosts , Value : *

8. 修改 Hue Configuration (root)
a. 修改 /usr/local/hue/desktop/conf/hue.ini
i. server設定
secret_key=jFE93j;2[290-eiw.KEiwN2s3['d;/.q[eIW^y#e=+Iei*@Mn<qW5o
ii. 其他Service的localhost參數改成對應的hostname

9. 啟動Hue (root)
a. 移至Hue資料
cd /usr/local/hue/build/env/bin
b. 啟動
./supervisor -d
c. -d 為背景啟動 



2015年9月30日 星期三

筆記Hortonworks叢集架設(三) - Ambari架設HDP Hadoop叢集



1. 進入Ambari介面 , 帳號密碼 admin/admin
http://<your.ambari.server>:8080


2. 設定Cluster名稱


3. 選擇HDP版本


4. 設定Cluster電腦與SSH連線設定
a. 注意, Ambari的root的ssh無密碼連線需可連到Cluster其他台電腦的root權限, 如hadoop01的hadoop帳號可連線到hadoop02的root帳號。

b. 注意, 安裝Ambari的電腦也需寫入, 如hadoop00。但不可給他任何service,只可給client,方便加入Kerberos。


5. Cluster設定完成畫面


6. 選擇安裝哪些Service

a. 建議, 以最小服務安裝, HDP安裝完成後在加上其他Service, 否則安裝問題較多。

7. 選擇各項節點要在哪些電腦

a. 因Cluster只有一台主機, 故所有節點都在此主機上, NameNode與SNameNode會有衝突, 產生SNameNode無法正常啟動。 

b. 安裝Ambari電腦不可有任何服務。


8. 選擇個電腦在HDP的設定角色
a. 安裝Ambari電腦可給Client。

9. 調整各Service參數

10. 檢視畫面

11. 安裝畫面

12. 安裝完成確認


13. 完成畫面


2015年9月16日 星期三

筆記Hortonworks叢集架設(一) - CentOS 7 設定


1. 網路設定 (root)

   a. 修改 /etc/sysconfig/network-scripts/ifcfg-你的網路卡編號


2. 升級套件 (root)

yum update -yyum install http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/7/x86_64/e/epel-release-7-5.noarch.rpm 

3. 關閉SELinux (root)

  a. 修改 /etc/sysconfig/selinux

SELINUX=disabled

4. 關閉Firewalld.service (root)


systemctl disable firewalld.service
systemctl stop firewalld.service

5. 更新SSL (root)

yum upgrade openssl 

6. 安裝NTPD (root)


yum install ntp ntpdate ntp-doc
service ntpd start
chkconfig ntpd on

7. 修改電腦名稱 (root)

   a. 修改 /etc/hostname

   b. 修改 /etc/hosts


8. SSH無密碼 (root)

   a. 以Ambari裝叢集需Ambari電腦root可無密碼其他台root權限之帳號

   b. 建立RSA

ssh-keygen

   c. 建立authorized_keys

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 

   d. 建立authorized_keys

chmod 600 authorized_keys

   e. 複製至其他台電腦, 因Ambari後續設定HDP故連線方式為root帳號連線目標root帳號

scp ~/.ssh/authorized_keys root@hadoop02.hadoop:~/.ssh/ 




筆記Hortonworks叢集架設(二) - CentOS 安裝 Hortonworks Ambari




1. 下載 Ambari Repository (root) 


2. 安裝Ambari (root) 

yum install ambari-server

3. 設定Ambari (root) 

ambari-server setup

4. 啟動Ambari (root) 

ambari-server start

5. 進入Ambari介面安裝HDP 2.3