В наших статьях на JavaRush мы не устаем говорить о том, что Java, которому скоро исполнится 25 лет, именно сейчас переживает вторую молодость и имеет блестящие перспективы в ближайшем будущем. Для этого есть ряд причин, и одна из них заключается в том, что Java — это основной язык программирования в целом ряде трендовых и быстро набирающих популярность ниш ИТ-рынка. Java и Большие данные: почему Big Data-проекты не обходятся без Java - 1Чаще всего в контексте глубокой привязанности и нежных чувств к Java упоминаются Интернет вещей (IoT) и big data, а также Business intelligence (бизнес-анализ, BI) и Real Time Analytics (аналитика в реальном времени). Недавно мы уже разобрали связь Java с Интернетом вещей и поговорили о том, как Java-разработчику “заточить” себя и свои навыки под эту нишу. Теперь время обратить внимание на вторую супер трендовую область, которая — все верно — тоже любит Java и жизни без него не мыслит. Итак, сегодня разбираем big data: почему Java, а значит и его верные кодеры, очень востребованы и в этой нише тоже, как именно этот язык применяется в проектах с “большими данными,” что учить, чтобы иметь необходимые навыки для трудоустройства и работы в данной нише и какие тренды актуальны для big data прямо сейчас, в преддверии 2020 года. А в промежутках между этим вот всем — мнения мировых экспертов первой величины о big data, после которых обучиться работать с “большими данными” захочет даже Гомер Симпсон. Java и Большие данные: почему Big Data-проекты не обходятся без Java - 2
“Я постоянно говорю, что в следующие 10 лет девушки будут бегать не за спортсменами и биржевыми брокерами, а за парнями, которые работают с данными и статистикой. И я не шучу.”
Хэл Вэриан (Hal Varian),
главный экономист Google

Big Data покоряет планету

Но сначала немного о big data и о том, почему эта ниша так перспективна для построения в ней карьеры. Если коротко, big data неотвратимо и неуклонно, а главное очень быстро, проникает в бизнес-процессы компаний по всему миру, а те, в свою очередь, вынуждены разыскивать профессионалов для работы с данными (это не только программисты, естественно), заманивая их высокими зарплатами и прочими ништяками. По данным Forbes, применение big data на предприятиях выросло с 17% в 2015 году до 59% в 2018 году. Big Data стремительно распространяется на разные сектора экономики, включая продажи, маркетинг, исследования и разработки, логистику и все-все-все. Согласно исследованию IBM, количество рабочих мест для профессионалов в этой сфере только лишь в США превысит 2,7 млн к 2020 году. Перспективненько? Еще бы.

Big Data и Java

А теперь о том, почему у Big Data и Java так много общего. Все дело в том, что многие основные инструменты для big data написаны как раз на Java. При этом, практически все эти инструменты являются open source проектами. А значит, они доступны всем желающим и по этой же причине активно используются крупнейшими ИТ-компаниями по всему миру. “В значительной степени, Big Data — это и есть Java. Hadoop и довольно большая часть экосистемы Hadoop написаны на Java. Интерфейс MapReduce для Hadoop — это тоже Java. Так что Java-разработчику будет довольно легко перейти в big data, просто создавая Java-решения, которые будут работать на базе Hadoop. Есть также и библиотеки Java, такие как Cascading, которые облегчают работу. Java также очень полезен для дебаггинга, даже если вы используете что-то вроде Hive [Apache Hive — система управления базами данных на основе Hadoop],” — сказал Марцин Мейран (Marcin Mejran), специалист по данным и вице-президент по разработке данных компании Eight. “Помимо Hadoop, Storm написан на Java, а Spark (т.е. вероятное будущее Hadoop) — на Scala (который, в свою очередь, работает на JVM, а Spark имеет интерфейс Java). Как видите, Java играет в big data просто огромную роль. Все это инструменты с открытым исходным кодом, а это значит, что разработчики внутри компаний могут создавать для них расширения либо добавлять функциональность. Эта работа очень часто включает Java разработку,” — добавил эксперт. Как видим, и в big data, так же как в Интернете вещей, машинном обучении и ряде других продолжающих набирать популярность ниш, знание Java будет просто незаменимым.
“У каждой компании сейчас в планах big data. И все эти компании в конечном итоге будут заниматься бизнесом больших данных.”
Томас Дейвенпорт (Thomas H. Davenport),
американский академик и эксперт в области аналитики и инноваций в бизнес-процессах
А теперь чуть подробнее о вышеупомянутых big data инструментах, которые повсеместно используются Java-разработчиками.

Apache Hadoop

Apache Hadoop — одна из основополагающих технологий для big data, и написана она на Java. Hadoop — это свободно распространяемый набор утилит, библиотек и фреймворков с открытым исходным кодом, который находится под управлением Apache Software Foundation. Изначально созданный для масштабируемых и распределенных, но при этом надежных вычислений, а также хранения огромных объемов различной информации, Hadoop естественным образом становится центром инфраструктуры “больших данных” для многих компаний. Компании по всему миру активнейшим образом ищут Hadoop специалистов, а Java как раз является ключевым навыком, который требуется для освоения этой технологии. По данным Developers Slashdot, в 2019 году многие крупные компании, среди которых JPMorgan Chase с его рекордными зарплатами для программистов, активно искали Hadoop-спецов на конференции Hadoop World, но даже там не смогли найти достаточно экспертов с нужными им навыками (в частности, это знание модели программирования и каркаса для написания приложений Hadoop MapReduce). Это означает, что зарплаты в данной сфере будут расти еще больше. А они и так очень немаленькие. В частности, Business Insider оценивает среднюю стоимость работы Hadoop специалиста в $103 тыс. в год, тогда как для big data спецов в целом эта цифра составляет $106 тыс. в год. Менеджеры по рекрутингу, занимающиеся поиском Hadoop-экспертов, среди важнейших скиллов для успешного трудоустройства выделяют Java. Hadoop уже давно используют или внедрили относительно недавно, очень многие крупные корпорации, среди которых IBM, Microsoft и Oracle. На текущий момент множество позиций для Hadoop-специалистов также есть у Amazon, eBay, Apple, Facebook, General Dynamic и других компаний.
“Как без дыма нет огня, так сейчас без big data нет бизнеса.”
Доктор Томас Редман (Dr. Thomas Redman),
известный эксперт в области аналитики данных и цифровых технологий

Apache Spark

Apache Spark — это еще одна ключевая big data платформа, которая серьезно конкурирует с Hadoop. Благодаря своей быстроте, гибкости и удобству для разработчиков, Apache Spark становится лидирующей средой для крупномасштабного SQL, пакетной и потоковой передачи данных и машинного обучения. Являясь фреймворком для распределенной обработки больших данных, Apache Spark работает по схожему принципу с фреймворком Hadoop MapReduce и постепенно отбирает у того пальму первенства по использованию в сфере big data. Spark можно применять множеством разных способов, в нем есть привязка к Java, как и ряду других языков программирования, таких как Scala, Python и R. На сегодняшний день Spark широко используется банками, телекоммуникационными компаниями, разработчиками видеоигр и даже правительствами. Конечно, и ИТ-гиганты, такие как Apple, Facebook, IBM и Microsoft, любят Apache Spark.

Apache Mahout

Apache Mahout — это open source Java библиотека для машинного обучения от Apache. Mahout является именно инструментом масштабируемого машинного обучения с возможностью обработки данных на одной или нескольких машинах. Реализации данного машинного обучения написаны на Java, некоторые части построены на Apache Hadoop.

Apache Storm

Apache Storm — это фреймворк для распределенных потоковых вычислений в реальном времени. Storm упрощает надежную обработку неограниченных потоков данных, делая в режиме реального времени то же, что делает Hadoop для пакетов данных. Storm интегрируется с любой системой очередей и любой системой баз данных.

Java JFreechart

Java JFreechart — это библиотека с открытым исходным кодом, разработанная на Java и предназначенная для использования в приложениях на основе Java для создания широкого спектра диаграмм. Дело в том, что визуализация данных является довольно важной задачей для успешного анализа больших данных. Поскольку big data подразумевает работу с большими объемами данных, определить какой-либо тренд и просто прийти к тем или иным выводам, просматривая необработанные данные, бывает сложно. Однако если те же данные отображаются в виде графика, они становятся более понятными, в них легче найти закономерности и определить корреляции. Java JFreechart собственно и помогает в создании графиков и диаграмм для анализа big data.

Deeplearning4j

Deeplearning4j — это библиотека Java, которая используется для построения различных типов нейронных сетей. Deeplearning4j реализована на Java и выполняется в среде, при этом совместима с Clojure и включает API для языка Scala. В технологии Deeplearning4j входит реализация ограниченной машины Больцмана, глубокой сети доверия, глубокого автокодировщика, стекового автокодировщика с фильтрацией шума, рекурсивной тензорной нейронной сети, word2vec, doc2vec и GloVe.
“Большие данные становятся новым сырьем для бизнеса.”
Крейг Мунди (Craig Mundie),
старший советник генерального директора Microsoft

Big Data на пороге 2020-го: свежайшие тренды

2020-й должен стать очередным годом быстрого роста и эволюции big data, вместе с повсеместным внедрением больших данных компаниями и организациями в различных сферах. Поэтому коротко осветим тренды big data, которые должны играть важную роль в следующем году. Java и Большие данные: почему Big Data-проекты не обходятся без Java - 3

Интернет вещей — big data становятся еще больше

Казалось бы, Интернет вещей (IoT) — это немного из другой оперы, а вот и нет. IoT продолжает “трендовать,” набирает обороты и распространяется по миру. Следовательно, растет и количество установленных в домах и офисах “умных” устройств, которые, как им и положено, передают всяческие данные куда надо. А потому объем “больших” данных будет только нарастать. Как отмечают эксперты, многие организации и так уже располагают множеством данных, в первую очередь из IoT-сектора, которые они пока не очень-то готовы применять, а в 2020-ом эта лавина станет еще больше. Следовательно, инвестиции в big data-проекты тоже будут быстро увеличиваться. Ну и напомним, что IoT тоже очень любит Java. Ну а кто его не любит?

Цифровые двойники (digital twins)

Цифровые двойники — это еще один интересный тренд ближайшего будущего, который прямо связан и с Интернетом вещей и с большими данными. А следовательно и применения Java в нем будет более чем достаточно. Что такое цифровой двойник? Это цифровой образ реального объекта или системы. Программный аналог физического устройства позволяет моделировать внутренние процессы, технические характеристики и поведение реального объекта в условиях воздействия помех и окружающей среды. Работа цифрового двойника невозможна без огромного количества датчиков в реальном устройстве, работающем параллельно. Ожидается, что уже к 2020 году в мире будет более 20 млрд подключенных датчиков, передающих информацию для миллиардов цифровых двойников. В 2020-ом данный тренд должен набрать обороты и выйти на первый план. Java и Большие данные: почему Big Data-проекты не обходятся без Java - 4

Цифровая трансформация станет более продуманной

Цифровая трансформация в качестве важного тренда упоминается уже не первый год. Но проблема в том, отмечают специалисты, что у многих компаний и топ-менеджеров было крайне размытое понимание того, что это словосочетание вообще означает. Для многих цифровая трансформация означала поиск способов продажи данных, которые собирает компания, для создания новых источников прибыли. К 2020 году все больше и больше компаний приходят к пониманию, что суть цифровой трансформации в правильном применении данных для каждого аспекта их бизнеса для создания конкурентного преимущества. А поэтому можно ожидать, что компании будут увеличивать бюджеты проектов, связанных с правильным и осознанным применением данных.
“Мы медленно движемся к эпохе, в которой Big Data — это отправная точка, а не конец.”
Перл Жу (Pearl Zhu), автор книг Digital Master

Итоги

Big Data — это еще одна поистине громадная область деятельности с массой возможностей, в которой Java-разработчик может найти себе применение. Так же как Интернет вещей, эта область бурно развивается и испытывает острую нехватку программистов, как и других технических экспертов. Поэтому сейчас самое время прекратить чтение таких вот длинных статеек и взяться за изучение Java! Java и Большие данные: почему Big Data-проекты не обходятся без Java - 5
Что почитать еще: