Slide 1

Slide 1 text

Apache FlinkͰߏங͢Δ ϦΞϧλΠϜετϦʔϜॲཧ ύΠϓϥΠϯ Scala෱Ԭ2017 2017/07/29 @matsumana

Slide 2

Slide 2 text

ࣗݾ঺հ • ໊લɿ দ࡚ ֶ • ॴଐɿ LINE Fukuokaגࣜձࣾ • Roleɿ SRE • Twitterɿ @matsumana

Slide 3

Slide 3 text

ΞδΣϯμ • Flinkͷ֓ཁ • TwitterͷσʔλΛूܭͯ͠ՄࢹԽ͢ΔσϞ

Slide 4

Slide 4 text

Flinkͷ֓ཁ

Slide 5

Slide 5 text

• Streaming first • Fault tolerant • Scalable • Performance ಛ௃

Slide 6

Slide 6 text

ϩΰ͸ՄѪ͘ͳ͍

Slide 7

Slide 7 text

جຊతͳॲཧͷྲྀΕ

Slide 8

Slide 8 text

Source(input), Sink(output) ͸৭ʑબ୒Մೳ • Twitter (source) • Kafka (source/sink) • RabbitMQ (source/sink) • Apache NiFi (source/sink) • AWS Kinesis (source/sink)

Slide 9

Slide 9 text

Source(input), Sink(output) ͸৭ʑબ୒Մೳ • HDFS (sink) • Elasticsearch (sink) • Cassandra (sink) • Redis (sink) • Flume (sink) • ActiveMQ (sink) • Third-Party Projects (e.g. Apache Zeppelin)

Slide 10

Slide 10 text

ίʔυྫ

Slide 11

Slide 11 text

JavaͰ΋ScalaͰ΋ॻ͚Δ͕ Scalaͷํ͕ ॻ͖΍͍͢͠ಡΈ΍͍͢

Slide 12

Slide 12 text

// Word count in Scala // set up the execution environment val env = ExecutionEnvironment.getExecutionEnvironment // get input data val text = env.fromElements( "To be, or not to be --that is the question:--", "Whether 'tis nobler in the mind to suffer", "The slings and arrows of outrageous fortune", "Or to take arms against a sea of troubles") // count val counts = text .flatMap { _.toLowerCase.split("\\W+") } .map { (_, 1) } .groupBy(0) .sum(1) // emit result and print result counts.print()

Slide 13

Slide 13 text

// Word count in Java // set up the execution environment // (লུ) // get input data // (লུ) // count DataStream> counts = text .flatMap((String line, Collector out) -> { String[] tokens = line.toLowerCase().split("\\W+"); Arrays.stream(tokens) .forEach(out::collect); }) .map(s -> new Tuple2<>(s, 1)) .groupBy(0) .sum(1); // emit result and print result // (লུ)

Slide 14

Slide 14 text

Flink DataStream API Programming Guide ʹ΋αϯϓϧίʔυ͕͋Γ·͢ https://ci.apache.org/projects/flink/flink-docs-master/dev/datastream_api.html

Slide 15

Slide 15 text

Flink͸LINEͰ΋ ࢖ΘΕ͍ͯ·͢

Slide 16

Slide 16 text

ڈ೥ͷΧϯϑΝϨϯεͰ঺հ͞Ε͍ͯΔͷͰ ৄ͘͠͸ͦͪΒΛݟͯԼ͍͞ ʢಈըɾεϥΠυ͕ެ։͞Εͯ·͢ʣ • LINE DEVELOPER DAY 2016
 https://engineering.linecorp.com/ja/blog/detail/87 • B-6 ηογϣϯ
 New stream processing platform with Apache Flink

Slide 17

Slide 17 text

• ֤http statusίʔυ਺ • http statusίʔυͷׂ߹
 (2xx, 3xx, 4xx, 5xx) • ϨεϙϯελΠϜͷׂ߹ • ϨεϙϯελΠϜͷpercentile
 (avg, min, 50, 90, 95, 98, 99) ͪͳΈʹɺΧϯϑΝϨϯεͰ࿩͕ग़ͯΔ ΞΫηεϩάूܭ͸͜Μͳ΍ͭͰ͢

Slide 18

Slide 18 text

࣍͸ Twitter͔ΒσʔλΛऔ͖ͬͯͯ ՄࢹԽ͢ΔσϞ

Slide 19

Slide 19 text

֓ཁਤ

Slide 20

Slide 20 text

Thank you :)