7. (C) Recruit Technologies Co.,Ltd. All rights reserved.
varlog.jarの開発
ビッグデータアプリ
→多数のDBの扱いが課題
7
Integrate software
resources & unlock
their full potential
“Absolute DRY”
common process
auto generated
DSL for processing
typically structured
data of Recruit
Codebase
8. (C) Recruit Technologies Co.,Ltd. All rights reserved.
varlog.jarの動作
8
xml
Recommend
User (Int)
Item (Int)
Dictionary
UserId (Int)
User (String)
Dictionary
ItemId(Int)
Item(String)
Input
UserId (Int)
ItemId(Int)
Loading
ML
Saving
Indexing
Format
tree graph
.Jarほぼ全部Spring。
Spring万歳
16. (C) Recruit Technologies Co.,Ltd. All rights reserved.
2. DataStoreWriter
3.HdfsにJavaから直接書き込む
こうでしょ!( )
16
.Jar
17. (C) Recruit Technologies Co.,Ltd. All rights reserved.
2. DataStoreWriter
裏側=FactoryでPojoクラスからwriterを生成
17
Avro形式なのもポイント!
Default=Avro
18. (C) Recruit Technologies Co.,Ltd. All rights reserved.
2. DataStoreWriter
writer.write(obj)してみて、確認
18
前半:JSON部分=
Avroスキーマ
後半:バイナリ部分=
Avroシリアライズデータ
+ Snappy圧縮
19. (C) Recruit Technologies Co.,Ltd. All rights reserved.
2. DataStoreWriter with Kuromoji
Kuromojiとは、日本語を形態素解析するライブラリ
19
お手軽!
20. (C) Recruit Technologies Co.,Ltd. All rights reserved.
3. Spark
Oracle
Hive
Hdfs
はクリア。では、Sparkは? Spark = オンメモリ分散処理系
①
SparkYarnTasklet sparkTasklet = new SparkYarnTasklet();
②
@SpringBootApplication
@EnableBatchProcessing
public class SparkYarnApplication
20
面倒ぃ
21. (C) Recruit Technologies Co.,Ltd. All rights reserved.
3. Spark
こうしました
RDD = Resilient Distribute Dataset = 可塑分散データセット
21
22. (C) Recruit Technologies Co.,Ltd. All rights reserved.
3. Spark with Zeppelin
22
.Jar
その場で作った
自作関数(動作確認後varlog.jarにコミット)
データ抜きだし・加工
RDDはJava/xml/Zeppelinから利用可能
Zeppelinは、Sparkを叩けるWebアプリ
23. (C) Recruit Technologies Co.,Ltd. All rights reserved.
3. Spark back to xml
.scala
File
<scala>
xml-tag
autodeploy
23
Release Notes as a Job
.Jar
Zeppelinで動作すれば、xmlにコピーして自動リリースも可能
24. (C) Recruit Technologies Co.,Ltd. All rights reserved.
4. Repository
Oracle
Hive
Hdfs
Spark
はクリア。では、Elasticsearchは? ES = LuceneのWebサーバーラッパー(スケーラブル)
→ElasticSearch Repository
24
25. (C) Recruit Technologies Co.,Ltd. All rights reserved.
4. Repository
裏側:component-scan時にfindBy…のmethod名を捕捉
→メソッドが付加されたRepositoryインスタンスがAutowireされてくる
→書き放題読み放題実装不要
scan対象:
25
27. (C) Recruit Technologies Co.,Ltd. All rights reserved.
6. Spring最強の機能について
Oracle/Hive/Hdfs/Spark/Elasticsearch/Kafka(略)/SpringBatch…
最強の機能とは????
27
28. (C) Recruit Technologies Co.,Ltd. All rights reserved.
[そこにある]プロパティ
外部ファイルが読み込まれているオブジェクトがすぐそこにある
28
hive.properties
29. (C) Recruit Technologies Co.,Ltd. All rights reserved.
[そこにいる]雑用係
フィールドに置いておくと、(知らないうちに)Query件数/速度のログ・メールをしてくれる
(Spring-AOP=Aspect Oriented)で裏で実行される
29
元からあった「本処理」
をAnnotateすればOK
メールに含めたい情報を
AnnotateすればOK
30. (C) Recruit Technologies Co.,Ltd. All rights reserved.
[そこにある]処理
定型処理はxmlに書かなくてもAutowireされる
30
補完前
Loading
ML
Saving
xml 補完後
Recommend
User (Int)
Item (Int)
Dictionary
UserId (Int)
User (String)
Dictionary
ItemId(Int)
Item(String)
Input
UserId (Int)
ItemId(Int)
Loading
ML
Saving
Indexing
Format