Z moich obserwacji Hadoop jako stack (YARN + HDFS + Hive) to raczej jest dalej używany w większości w instytucjach finansowych (banki, ubezpieczenia, ...), ale bardziej z powodów prawnych niż technicznych. Tak przynajmniej wynika z dyskusji z ludźmi po meetupach. I jeśli Hadoop, to rzadko jako samo utrzymywalny stack, a częściej jako dystrybucja Cloudera Hortonworks. Ku precyzji, to co napiszę, to wynik mojej obserwacji rynku francuskiego, a przez "obserwuję" mam na myśli oferty o pracę, konferencje, blogi.
Jeśli chodzi o szerzej rozumiane Big Data (chociaż wolę termin data engineering), to firmy skłaniają się w stronę cloudowych rozwiązań. Dlaczego?
- koszty devops - trudno znaleźć devopsów, a tych dobrych jeszcze trudniej. Minimalizuje się więc koszty infrastruktury w projektach.
- scaling - to, że dzisiaj potrzebujesz 10 node'ów, żeby przetworzyć 1TB nie znaczy, że jutro jak będziesz miał 2TB, to łatwo dodasz sobie 10 kolejnych. W chmurze takie dylematy są o wiele mniej poważne - istnieją, bo nie możesz sobie w nieskończoność dodawać node'ów, tworzyć 2 tysięcy klastry itd, bo na wszystko prawie są limity, ale skalowalność jest o wiele bardziej elastyczna
- ludzie - mało kogo dzisiaj bawi praca w stylu "kurcze, mam 10% miejsca na dysku, musimy dodać nową maszynę - piszę ticket do IT, IT kupuje serwer, a ja przez 5 dni biję się z myślami, jak grać z danymi, żeby ich nie stracić" (karykatura, ale coś w tym jest)
Oczywiście, nie umniejszam znajomości Hadoop. Sam od tego zaczynałem i się cieszę, bo można znaleźć wiele odpowiedników w serwisach chmurowych, a część z nich jest nawet implementowana (np. EMR w AWS). Ale nie samym Hadoopem człowiek żyje i tak:
- MapReduce - nie widziałem, żeby ktoś tego dzisiaj wymagał. Spark z OS, trochę mniej Flink, a z cloudowych to Dataflow i Databricks (serverlessowe rozwiązania)
- YARN - Kubernetes wydaje się go wygryzać do wysyłania jobów na cluster - nie mylić ze schedulingiem
- Oozie - Airflow jest o wiele bardziej elastyczny, przypomina coś w rodzaju Infrastructure As Code, nawet jeśli chodzi tylko o joby, które schedulujesz
- Hive - z moich obserwacji jeden z ostatnich bastionów Hadoopa, który jako tako jest na rynku wymagany
- HDFS - zastąpiony przez tańsze w utrzymaniu serwisy do przechowywania obiektów (S3, GCS)
- HBase - BigTable, DynamoDB, łatwo skalowalne, DynamoDB oferuje nawet możliwość streamingu zapisywanych danych
- streaming broker - jeśli mnie pamięć nie myli, nie istnieje w stacku Hadoopa
Reasumując, Hadoop jako narzędzie do pierwszej pracy - nie. Raczej radziłbym opanować serwisy data jednego z chmurowych dostawców (GCP wydaje się zyskiwać na popularnośći, ostatnio nawet Twitter na niego przeszedł (https://cloud.google.com/twitter/). A co do OS rozwiązań, to:
- Kafka do streamingu
- Spark do przetwarzania danych
- Kubernetes do wykonywania programów (resurce manager)
- i później jakieś bazy NoSQL, co kto woli, ja zaczynałem od Cassandry (łatwiej zrozumieć DynamoDB), Elasticsearch (do dokumentów i wyszukiwarki). Pracowałem też z Neo4J, ale akurat ciężko się go skalowało
- nieśmiertelny SQL - ignorowałem go przez długi czas, ale po jednym projekcie typowo ETL-owym, bazującym na SQL, przekonałem się jakie możliwości oferuje
- Python i Scala jeśli piszez w Javie - subiektywne odczucie, ale te 2 języki dzisiaj są najczęściej przypisywane do przetwarzania danych
Jeśli jesteś ciekawy info o tych technologiach, to bloguję o nich, i o przetwarzaniu danych, na https;//www.waitingforcode.com .
No i to tyle :)