Язык программирования для big data

Какой *** язык программирования использовать для обработки больших данных?

Перевод статьи «Which freaking big data programming language should I use?» представил канал Nuances of programming.

Язык программирования для big data. Смотреть фото Язык программирования для big data. Смотреть картинку Язык программирования для big data. Картинка про Язык программирования для big data. Фото Язык программирования для big data

Автор статьи представляет на суд читателя языки программирования для анализа и обработки больших массивов данных. Без навязывания личного мнения, автор старается расширить пониманием читателя и осознанно подойти к выбору, исходя из индивидуальных условий и потребностей.

Когда дело доходит до масштабируемой обработки данных, в основном, приходится использовать R, Python, Scala и Java

Допустим у вас есть проект с большими данными. Вы разбираетесь в предметной области, знаете, какую инфраструктуру использовать, и, возможно, даже решили использовать определенную среду для обработки, и тут в центре внимания оказывается одна проблема: какой язык программирования выбрать? (Или, возможно, вопрос стоит еще острее: на каком языке заставить работать разработчиков и специалистов по обработке и анализу данных?) Это вопрос, ответ на который можно отложить лишь до поры до времени.

Конечно, ничто не помешает обработать большие данные с помощью, скажем, XSLT преобразований (такая первоапрельская шутка, посмотрите на следующий день на лица этих людей). Однако, как правило, сегодня для обработки больших данных предлагается на выбор три языка– R, Python и Scala – плюс несгибаемая под тяжестью лет универсальная «черепаха» Java. Какой язык выбрать и почему … или когда?

Чтобы помочь принять решение, дадим краткое описание каждого из упомянутых языков.

R часто называют «языком статистиков, созданными статистиками». Если вам нужна эзотерическая статистическая модель для вычислений, скорее всего, вы найдете ее на CRAN – и между прочим, она вовсе не называется «Исчерпывающая и всеобъемлющая сеть архивов кода на R. Для анализа и построения графика вы не сможете использовать ggplot2. И, если вам потребуется больше вычислительной мощности, можно воспользоваться запустить R на Spark (с помощью привязки SparkR).

Python

Если ваши специалисты по обработке и анализу данных не используют R, они, вероятно, досконально владеют Python. Этот язык популярен в науке на протяжении уже более десятка лет, особенно в таких областях, как обработка естественного языка (NLP – Natural Language Processing). В результате, если у вас есть проект, требующий работы с NLP, вы столкнетесь с удручающе огромным количеством вариантов, включая классический NTLK, выделением тем текстов на естественном языке с помощью GenSim или молниеносной быстротой и точность spaCy. Подобным же образом, Python имеет огромные преимущества в прикладных задачах для нейронных сетей, с помощью Theano и Tensorflow; имеется scikit-learn для машинного обучения, а также NumPy и Pandas для анализа данных.

Также имеется Juypter / iPython – веб-сервер, который позволяет использовать микс из кода, графиков, ну и, всего, что может потребоваться в формате журнала. Сначала, казалось, это вероятный убийца Python, но к сейчас эта концепция стала настолько признанной, что распространилась на большинство языков, поддерживающих REPL-концепцию (цикл чтение-вычисление-печать – Read-Evaluate-Print-Loop), включая Scala и R.

Python, как правило, поддерживается фреймворками обработки больших данных, но в то же время он не входит в высшую лигу в этой сфере. Например, новые функции Spark почти всегда выходят в первую очередь для Scala / Java, тогда как для PySpark может потребовать ожидание нескольких новых младших версий (особенно это касается разработки на Spark Streaming / MLLib).

В отличие от R, Python является традиционным объектно-ориентированным языком программирования, поэтому большинству разработчиков будет комфортно с ним работать, тогда как уже начальное знакомство с R или Scala может отпугнуть. Трудностью может стать и соблюдение правильных отступов в форматировании программного кода. Эта особенность делит программистов на две группы: на тех, для кого «это отлично подходит для обеспечения удобочитаемости» и тех, кто считает, что в 2016 году отпадет необходимость бороться с интерпретатором за запуск программы на исполнение, потому что строка является лишним, неуместным символом (вы, наверное, догадываетесь к чему я клоню).

Scala

Ох, Scala – из четырех рассматриваемых языков программирования, Scala – это язык, который любого восхитит своей системой типов. Начиная с JVM, Scala – это, в общем, успешный брак между функциональной и объектно-ориентированной парадигмами, и в настоящее время он нашел весьма успешное применение в финансовой сфере и среди компаний, работающих с большими объемами данных, зачастую плохо структурированных (например, такими как Twitter и LinkedIn). Этот язык к тому же теснит как Spark, так и Kafka.

Поскольку он работает на JVM, это дает бесплатный доступ к экосистеме Java, хотя у него имеется и множество «родных» библиотек для обработки масштабных данных (в частности, Algebird и Summingbird от Twitter). Он также включает очень удобный REPL для интерактивной разработки и анализа, как в Python и R.

Мне очень нравится Scala, поскольку включает множество полезных функций программирования, таких как сопоставление с образцами (паттернами проектирования) и значительно менее многословен, чем стандартный Java. Однако в Scala часто имеется несколько способов что-то сделать и эта особенность языка используется в его рекламе как преимущество. И это хорошо! Но учитывая, что в Scala имеет полную по Тьюрингу систему типов и всевозможные операторы (‘/:’ для foldLeft и ‘: \’ для foldRight), довольно просто открыв файл с кодом на Scala подумать, что вы видите на особенно отвратительный вариант кода на Perl. Необходим хороший опыт и подробные рекомендаций для успешного написания кода на Scala (имеет смысл посмотреть рекомендации от Databricks).

Еще одним недостатком является медленная работа компилятора Scala, что в каком-то смысле возвращает нас во времена классической «компиляции!» (лента XKCD). Тем не менее, у него есть REPL, поддержка больших данных и веб-тетради в формате Jupyter и Zeppelin, благодаря чему этому языку можно простить его многочисленные причуды.

Наконец, всегда есть Java – нелюбимая, покинутая, принадлежащая компании, которая, единственная, по-видимому, о не только и заботится, которая делает деньги из исков против Google, и совершенно немодная. Только промышленные дроны используют Java! Однако Java может отлично подойти для вашего проекта по большим данным. Рассмотрим Hadoop MapReduce — Java. HDFS? Написан на Java. Даже Storm, Kafka и Spark работают на JVM (в Clojure и Scala), а что означает, что Java является перворазрядным рекордсменом на участие в проектах по большим данным. Также возникаю новые технологии, такие как Google Cloud Dataflow (теперь Apache Beam), которые до недавнего времени поддерживались только на Java.

Java, возможно, сегодня и не является самым предпочитаемым и звездным языком. Но пока большинство перенапрягается при попытках разбраться с обратными вызовами в Node.js-приложениях, применение Java открывает доступ к большой экосистеме профилировщиков, отладчиков, средств мониторинга, библиотек для обеспечения безопасности и, множеству всего прочего, большинство из которых прошли «боевые» испытания в течение последних двух десятков лет. (Прошу прощения, в этом году Java исполняется 21 год, все мы стареем.)

Основными притензиями к Java являются многословность и отсутствие REPL (представленных в R, Python и Scala) для итеративного применения. Я видел десяти строковый Scala-код в Spark в 200-строчном чудовище на Java, в купе с огромным количеством операторов типов, занимающих большую часть экрана. Тем не менее, новая поддержка лямбда в Java 8 привносит многое для исправления этой ситуации. Java никогда не будет такой компактной, как Scala, но Java 8 действительно делает разработку на Java менее болезненной.

А как насчет REPL? Хорошо, тут вы попали в точку. Но Java 9 будет включать JShell, которая сможет удовлетворить всех ваши потребности в REPL.

А теперь — внимание

Какой язык следует использовать для вашего проекта больших данных? Боюсь, я собираюсь просто уйти от прямого ответа, утверждая, что «это зависит от…». Если вы проводите анализ больших данных с загадочными статистическими расчетами, тогда вы будете просто не в своём уме, если откажетесь от использования R. Если вы занимаетесь NLP или интенсивной обработкой данных с помощью нейронных сетей на графических процессорах, то Python – наилучший выбор. А для высокопроизводительных решений с применением всех важных средств обработки отличным выбором станут Java или Scala.

Конечно, не стоит впадать и в другую крайность – или-или. Например, вы можете использовать Spark для моделирования и машинного обучения на хранимых данных с помощью R или Python, а затем создать рабочий (промышленный) вариант, который сможет использоваться вашим приложением на Scala Spark Streaming. Не стоит также пренебрегать и использованием однородного набора языков, обладающих сильными сторонами только с точки зрения обработки больших данных (в противном случае ваша команда может начать быстро страдать от языковой усталости).

Источник

Big Data и лучшие инструменты аналитики в 2021 году

Big Data и лучшие инструменты аналитики в 2021 году

Язык программирования для big data. Смотреть фото Язык программирования для big data. Смотреть картинку Язык программирования для big data. Картинка про Язык программирования для big data. Фото Язык программирования для big data

Вероника Голубева

ведущий аналитик данных в «Сбере»

Десять лет назад данные по всему миру начали активно расти, открывая возможности по улучшению клиентского опыта. На текущий момент понятие Big Data уже прочно вошло в обиход по всему миру. Львиная доля этих данных собирается через Интернет, а остальная часть с помощью устройств с возможностью выхода в сеть. Также еще один важный фактор роста — это растущее число виртуальных online офисов.

Компании заинтересованы как в найме экспертов Big Data, так и людей хорошо разбирающихся в инструментах аналитики. Руководители команд ищут сотрудников, обладающих компетентными навыками и демонстрирующих талант и когнитивные способности, которые стали бы ценным активом для выполнения нишевых обязанностей компании. Много из того, что было ценным раньше утратило свою ценность и наоборот. В любом случае, давай подробнее разберем что такое Big Data.

Мы без остановки производим гигантское количество данных через социальные сети, общественный транспорт и интернет покупки. Их объемы завораживают дух. Ежедневно мы загружаем 95 миллионов изображений и видео, 340 миллионов твитов и 1 миллиард документов. Всего мы производим 2,5 квинтиллиона байт в день, кто-то из вас помнит сколько это нулей? Вот поэтому их и называют Big Data.

Хотя данные проникли почти во все ниши и служат одной из главных движущих сил успеха современных компаний, но термин Big Data используется не так давно. К слову, Google Trends демонстрирует интерес пользователей к этому словосочетанию с 2011 года. Сегодня этот термин находится в активной ротации, являясь одним из наиболее часто используемых в корпоративной среде. У этого термина нет четких границ и определения, кто-то считает что Big Data начинается со 100 Гб (500 Гб, 1 Тб, что угодно), кто-то с данных которые невозможно обработать в Excel или с данных которые невозможно обработать на одном компьютере, а кто-то причисляет к ним любые данные. Поэтому существует и альтернативное мнение, что Big Data не существует, это вымышленный персонаж, который маркетологи используют, чтобы заставить компании тратить деньги.

18 мая – 5 июня, Онлайн, 34 000 ₽

Так что же это за концепция? По сути, Big Data — это серия подходов, инструментов и методов, используемых для обработки структурированных и неструктурированных данных огромных объемов и значительного разнообразия для получения результатов, воспринимаемых людьми, которые доказывают свою эффективность в условиях непрерывного роста. Большие данные служат альтернативой традиционным системам управления базами данных и решениям в рамках Business Intelligence.

Таким образом, большие данные не относятся к определенному количеству данных или даже к самим данным. Вместо этого термин означает методы обработки данных, которые позволяют распределенную обработку информации. Эти методы могут применяться как к огромным наборам данных (например, содержание всех страниц в Интернете), так и к небольшим (например, к содержанию этой статьи).

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

Три больших кита Big Data

Когда мы говорим о больших данных, мы не можем не упомянуть три ключевых свойства: объем, скорость и разнообразие. Эти три вектора позволяют нам понять, чем большие данные выгодно отличаются от управления данными старой школы.

Объем

Количество данных должно быть достаточно. Вам придется обрабатывать огромные объемы неструктурированных данных с низкой плотностью. И размер данных является наиболее важным показателем при определении возможной извлекаемой ценности, так как чем больше данных, тем точнее можно получить результат на них. Клики-потоки, системные журналы и системы потоковой обработки обычно генерируют достаточные по объему данные.

Разнообразие

Давно прошли те времена, когда данные собирались из одного места и возвращались в едином формате. Сегодня данные бывают всех форм и размеров, включая видео, текст, звук, графику и даже выкалывание на бумаге. Таким образом, большие данные предоставляют возможности для использования новых и существующих данных и разработки новых способов сбора данных в будущем.

Скорость

Под скоростью обычное подразумевается, как быстро данные попадают к нам из различных систем для дальнейшего с ними взаимодействия. Некоторые данные могут появляться в режиме реального времени, а некоторые поступают пачками. Поскольку большинство платформ обрабатывают входящие данные с разной скоростью, важно не ускорять процесс принятия решения, не имея всей необходимой информации.

Лучшие инструменты для работы с Big Data

Программное обеспечение Big Data Analytics широко применяется для эффективной обработки данных и достижения конкурентного преимущества на рынке. Эти программные аналитические инструменты помогают отслеживать текущие рыночные изменения, потребности клиентов и другую различную ценную информацию. Давайте рассмотрим самые популярные инструменты аналитики 2021 году.

Apache Hadoop

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

Эта основополагающая технология хранения и обработки больших данных является проектом верхнего уровня Apache Software Foundation.

Hadoop состоит из четырех частей:

X-plenty

Эта облачная масштабируемая платформа входит в число лидеров в своей нише, предлагая решения ETL и инструменты конвейера данных. X-plenty обрабатывает как структурированные, так и неструктурированные данные и объединяется с различными источниками, включая Amazon Redshift, хранилища данных SQL, базы данных NoSQL и облачные службы хранения. Основные преимущества:

Spark

Сегодня этот мощный инструмент аналитики с открытым исходным кодом является одним из основных в арсенале компаний, включая Amazon, eBay и Yahoo. Apache Spark — это технология для работы с большими данными посредством распределенных вычислений в оперативной памяти, что увеличивает скорость обработки. Он основан на Hadoop и является по сути эволюцией концепции MapReduce, используя другие типы вычислений, включая интерактивные запросы и потоковую обработку.

Spark создан для широкого спектра рабочих задач, таких как пакетные приложения, итерационные алгоритмы, интерактивные запросы и потоковая передача. Это делает его идеальным вариантом как для любительского использования, так и для профессиональной обработки больших объемов данных.

Cassandra

Если вы знакомы с базами данных NoSQL, вы наверняка сталкивались с Cassandra. Это бесплатная база данных NoSQL с открытым исходным кодом, и она хранит значения в виде пар ключ-значение. Этот инструмент — идеальный выбор, когда вам требуется масштабируемость и высокая доступность без ущерба для производительности.

Благодаря своим архитектурным особенностям Apache Cassandra имеет следующие преимущества:

Talend

Talend — это аналитическая программа, а точнее бесплатный инструмент ETL с открытым исходным кодом, которая упрощает и оптимизирует интеграцию больших данных. ETL упрощает преобразование необработанных данных в информацию, которую можно использовать для практической бизнес-аналитики (BI). Программное обеспечение Talend может похвастаться такими функциями, как облако, большие данные, интеграция корпоративных приложений, качество данных и управление основными данными. Он также содержит единый репозиторий для хранения и повторного использования метаданных и проверки качества данных.

Существует широкий спектр инструментов для работы с большими данными, которые помогают хранить, анализировать, составлять отчеты и делать с данными намного больше. Это программное обеспечение превращает скудные биты данных в мощное топливо, которое стимулирует глобальные бизнес-процессы и способствует принятию решений, основанных на знаниях.

Итоги

Когда-то использование больших данных произвело революцию в области информационных технологий. Сегодня компании используют ценные данные и внедряют инструменты больших данных, чтобы превзойти своих конкурентов. На конкурентном рынке как устоявшиеся компании, так и новички применяют стратегии, опираясь на обработанные данные, чтобы зафиксировать сигнал, отследить пожар и получить прибыль.

Большие данные позволяют организациям определять новые возможности и создавать новые типы компаний, которые могут комбинировать и анализировать отраслевые данные. Таким образом, чистые, актуальные и наглядные данные предоставляют полезную информацию о продуктах, оптимизируют бизнес-операции и влекут за собой значительные экономические преимущества.

Источник

Как программисту перейти в big data

Язык программирования для big data. Смотреть фото Язык программирования для big data. Смотреть картинку Язык программирования для big data. Картинка про Язык программирования для big data. Фото Язык программирования для big data

Язык программирования для big data. Смотреть фото Язык программирования для big data. Смотреть картинку Язык программирования для big data. Картинка про Язык программирования для big data. Фото Язык программирования для big data

Содержание:

Язык программирования для big data. Смотреть фото Язык программирования для big data. Смотреть картинку Язык программирования для big data. Картинка про Язык программирования для big data. Фото Язык программирования для big data

Big data надолго останется среди востребованных информационных технологий. По прогнозам, к 2025 году предприятия будут создавать около 60% всех мировых данных. Практически непрерывно потоки информации генерируют компании в сфере финансов, телекоммуникаций, электронной коммерции. Подобный бизнес нуждается в технологических решениях, которые помогут эффективно собирать, хранить и использовать большие объемы данных. Это одна из причин, почему в ближайшие годы спрос на профессионалов в big data будет только расти.

Мы расскажем, какие есть специальности в сфере big data и какие основные технологии нужно изучить программисту, чтобы связать свою карьеру с большими данными.

Где проходит грань между обычными и большими данными

В русском языке для термина big data часто используют кальку с английского – «большие данные». Но где проходит та грань, которая разделяет данные на «большие» и «обычные»? Принято считать, что объем big data начинается с терабайта, так как такое количество данных уже сложно хранить и обрабатывать в реляционных системах. Есть и другие критерии, которые объясняют, почему потребовались новые методы для работы с большими данными.

Многообразие. Большие данные чаще всего состоят из неструктурированной информации, которая может поступать из нескольких источников в виде разных по формату данных (видео и аудиофайлы, текст, изображения и др.). Технологии big data позволяют обрабатывать разнородные данные одновременно.

Скорость накопления. Данные генерируются все быстрее. Например, онлайн-магазину нужно постоянно собирать информацию о количестве клиентов и их покупках. Для хранения таких данных лучше подходят нереляционные базы данных, так как их легко масштабировать горизонтально, добавляя новые сервера (большинство реляционных баз данных масштабируются вертикально за счет увеличения оперативной памяти).

Скорость обработки. Большие данные, не смотря на свой внушительный объем, должны очень быстро обрабатываться, часто – в режиме реального времени. Например, рекомендательные системы в онлайн-магазинах мгновенно анализируют поведение клиента и выдают результат, какие еще товары могут ему понравиться. Такая высокая скорость обработки достигается за счет распределенных вычислений.

Таким образом, для программистов работа с большими данными подразумевает решение сложной, противоречивой задачи: как обеспечить сбор и хранение постоянно растущего объема разнородных данных, достигая при этом очень высокой скорости обработки.

Что нужно знать для работы с большими данными

Обработка больших данных – непростая задача для программистов, для решения которой постоянно появляются новые методы и инструменты. Однако есть основной стек технологий, которые чаще всего встречаются в вакансиях.

Какие парадигмы программирования используются

Работая с большими данными, вы будете обращаться к разным парадигмам программирования: императивной, декларативной и параллельной. Например, для программирования баз данных на языке SQL используется декларативный подход, когда задается задача и нужный результат без указания промежуточных шагов. Чтобы справиться с быстрой обработкой большого массива данных, нужно применять многопоточные и параллельные вычисления. Один из вариантов решения проблемы – парадигма MapReduce. Это вычислительная модель параллельной обработки распределенных данных. Алгоритм позволяет разделить задачи между машинами кластера, чтобы обработка данных происходила одновременно на всех задействованных компьютерах.

Какой язык программирования выбрать

На этот вопрос нельзя ответить однозначно. Раньше специализированными языками для аналитики данных считались R и MATLAB, но сегодня выбор у разработчиков больше. Возможно, вам не придется менять язык программирования, чтобы заниматься обработкой больших данных. Мы составили список наиболее востребованных языков программирования в этой сфере.

Чем вы можете заниматься в big data

Работу с большими данными можно разделить на два направления. Первое – создание и поддержка инфраструктуры для сбора, хранения и обработки данных, второе – анализ и извлечение полезной информации. Для каждого из этих процессов нужны специалисты со знанием программирования. В первом направлении задействованы привычные для IT специальности – инженеры, архитекторы, администраторы, но владеющие технологиями для работы с большими данными. Анализ данных – более узкая специализация, часто требующая определенного образования или опыта.

Список возможностей для карьеры в сфере больших данных постоянно расширяется – с развитием технологий появляются новые, более узкие направления:

Как начать работать с big data

Программист с опытом разработки именно в сфере больших данных – все еще редкая находка для нашей страны. Белорусские компании расширяют фокус поиска и, в первую очередь, обращают внимание на способности кандидатов, а не опыт.

Программисту проще всего перейти на позицию инженера больших данных. Основная часть работы по-прежнему будет связана с кодом, а большие данные станут вашей специализацией. Начните с изучения подходящего для big data языка программирования. Беспроигрышным вариантом будет Java или Python. Если вы сейчас пишите на одном из этих языков, то осваивайте библиотеки для работы с данными. В Python полезно знать библиотеки Numpy, Pandas, SQLAlchemy.

Тем, кто только начнет разбираться с Java или Python, важно понять, как в этих языках реализуется многопоточность и сериализация и как работать с коллекциями. Для позиции junior этих знаний может быть достаточно. Дальше вы сможете изучать технологии, в зависимости от проекта, над которым будете работать. Если хотите повысить свои шансы на получение интересного предложения о работе, то осваивайте Hadoop.

С позиции инженера больших данных в перспективе вы сможете перейти на другую роль. Big data – обширная сфера IT, внутри которой будет появляться все больше специализаций, например, с акцентом на технологии (Hadoop разработчик). Возможно, вас заинтересует архитектура баз данных, и вы будете развиваться в этом направлении. Если у вас есть хорошая математическая подготовка, то можете попробовать себя в машинном обучении. В любом случае, работая над конкретным проектом, легче определиться, что вас увлекает: технические задачи или, например, анализ данных.

В big data сложно практиковаться вне компании – вы не можете дома написать приложение без доступа к терабайтам данных. Если вы уже работаете программистом в IT-секторе, то самым простым способом попробовать свои силы в big data будет проект в вашей компании. Проконсультируйтесь с коллегами, которые занимаются большими данными, узнайте, над чем они сейчас работают и какие технологии используют. Вы можете обсудить с руководством, как вам развиваться в сфере больших данных внутри компании. Если работодатель заинтересован в вашем росте, то он не откажет в помощи.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *