Apache Flink

**Apache Flink** adalah sistem pemrosesan data terdistribusi yang mendukung pemrosesan berkelompok (*batch*) maupun aliran data (*streaming)*. Flink dirancang untuk menangani berbagai tantangan dalam pengolahan data terbatas dan tidak terbatas secara efisien.

## Fitur
Beberapa fitur utama Flink meliputi:

* Dukungan jendela waktu yang fleksibel, memungkinkan pengelompokan data berdasarkan periode tertentu.
* Konsistensi status dengan jaminan pemrosesan tepat sekali (*exactly-once*), memastikan keakuratan data tanpa duplikasi atau kehilangan informasi.
* Pemrosesan berbasis waktu kejadian (*event-time semantics*), mempertahankan urutan asli data sesuai waktu terjadinya.
* Pemrosesan aliran data yang memiliki status (*stateful stream processing*), memungkinkan penyimpanan dan pengelolaan data selama pemrosesan.
* Dukungan untuk pemrosesan kejadian kompleks (*complex event processing*) dan kueri berkelanjutan (*continuous queries*), memungkinkan analisis data secara langsung (*real-time*).

## Sejarah
Apache Flink berasal dari proyek penelitian akademik. Pada tahun 2010, proyek Stratosphere dimulai oleh lima kelompok penelitian dari Technische Universität Berlin, Humboldt Universität zu Berlin, dan Hasso Plattner Institute Potsdam. Tujuan utama proyek ini adalah mengembangkan pendekatan baru untuk pemrosesan data terdistribusi dalam skala besar.

Sebagai bagian dari proyek ini, para peneliti mengembangkan prototipe sistem pemrosesan data untuk mengevaluasi pendekatan baru mereka. Perangkat lunak ini kemudian dirilis sebagai aplikasi terbuka (*open-source)* di bawah lisensi perangkat lunak Apache.

Pada tahun yang sama, proyek Apache Hadoop (dari sebuah implementasi aplikasi terbuka (*open-source)* dari Google MapReduce dan Google File System (GFS)) yang menjadi sangat populer di kalangan industri dan akademisi. Keunggulan utama Hadoop adalah kemampuannya untuk menskalakan tugas pemrosesan data ke banyak mesin dengan spesifikasi standar serta toleransi tinggi terhadap kegagalan perangkat keras dan perangkat lunak.

Namun, komunitas penelitian basis data menyadari bahwa MapReduce tidak cukup efisien atau mudah digunakan dalam mendefinisikan aplikasi analitik yang kompleks. Oleh karena itu, proyek Stratosphere bertujuan untuk menggabungkan keunggulan MapReduce dengan sistem basis data relasional.

Proyek ini menghasilkan sistem pemrosesan data terdistribusi yang terdiri dari:

# Model pemrograman PACT, yang menggeneralisasi model pemrograman MapReduce dengan menyediakan lebih banyak operator paralel.
# Mesin pemrosesan aliran data terdistribusi Nephele, yang menjalankan program PACT sebagai aliran data berbentuk graf asiklik terarah (DAG).
# Optimizer, yang menerjemahkan program PACT menjadi aliran data Nephele untuk meningkatkan efisiensi eksekusi.

Pendekatan ini membuat spesifikasi aplikasi analitik yang kompleks menjadi lebih mudah. Operator runtime yang digunakan untuk menjalankan program PACT diimplementasikan berdasarkan algoritma terkenal dalam sistem basis data, seperti:

* External merge-sort
* Block-nested loop join
* Hybrid-hash join
* Sort-merge join

Pendekatan ini memungkinkan sistem untuk menangani pemrosesan data dengan efisiensi yang lebih tinggi dibandingkan dengan MapReduce.

## Referensi