Ваш маршрут обучения большим данным

Kafka

   

эта работа Ху Си

Получив степень магистра компьютерных наук в Бейханском университете, в настоящее время он работает в интернет-финансовой компании и является энтузиастом технологий с открытым исходным кодом. Работал в IBM, Sogou, Weibo и других компаниях. Он глубоко разбирается в Kafka и других технологиях и фреймворках потоковой обработки с открытым исходным кодом, а также является старшим разработчиком кода Kafka в Китае. У него есть глубокие исследования принципа Кафки, механизма работы и разработки приложений.

  • введение

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

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

  • Роль

По моему скромному мнению, нынешняя индустрия больших данных имеет две следующие роли.

  1. Инженерия больших данных

  2. Анализ больших данных

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

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

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

  • какую роль мы играем

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

  1. Профессиональные знания

  2. Опыт работы в отрасли

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

  1. Компьютерные знания, такие как операционные системы, языки программирования, принципы работы компьютеров и т. д.

  2. Математические знания здесь относятся к высшей математике, такой как исчисление, вероятность и статистика, линейная алгебра и дискретная математика и т. д., а не к математике, такой как графики, рисуемые x×x+y×y=1.

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

  1. новобранец.

  2. Инженеры с определенным опытом.

  3. Старший эксперт. Теперь в области больших данных появилось более крутое имя, специалист по данным, например, доктор Эндрю Нг, бывший главный специалист по данным в Baidu.

Что ж, теперь мы можем определить нашу роль в соответствии с приведенной выше классификацией. Например, на примере автора мое позиционирование для себя таково: «Я инженер, получивший высшее образование в области компьютерных наук и имеющий определенную математическую базу (особенно в исчислении и линейной алгебре), но математическая статистика и теория вероятностей не мои. Сильные стороны." Кроме того, лучше не делать опухшее лицо, как толстяк, если у вас нет предыдущего опыта, ничего страшного, чтобы признать, что вы новичок, главное найти свою позицию.

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

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

  2. Если у вас есть определенная база программирования (владеете некоторыми языками высокого уровня, такими как Python и т. д.) и имеете сильную математическую базу, то анализ больших данных может быть направлением ваших усилий.

  • маршрут обучения

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

  • Сегментирование и маршрутизация данных. Выберите типичный алгоритм секционирования для изучения, например согласованное хеширование (https://en.wikipedia.org/wiki/Consistent_hashing).

  • Механизм резервного копирования и согласованность.

√ Обучение считается «Библией» дома, но также и общей теорией CAP за границей (https://en.wikipedia.org/wiki/CAP_theorem).

√ Идемпотент, краеугольный камень управления состоянием во многих распределенных системах (https://mortoray.com/2014/09/05/what-is-an-idempotent-function/).

√ Различные модели согласованности: сильная согласованность, слабая согласованность, конечная согласованность.

√ Механизм резервного копирования: Имя ведущий-ведомый не очень популярно, а нынешнее крутое название - режим Ведущий-ведомый.

√ Протокол консенсуса: в Китае он обычно переводится в протокол консенсуса. Изучите распространенные протоколы Paxos и Raft.

  • Алгоритмы и структуры данных.

√ LSM: узнайте, чем оно отличается от дерева B+ и в чем его преимущества.

√ Алгоритм сжатия: Понимание основных алгоритмов сжатия, таких как Snappy, LZ4. Кроме того, Facebook недавно открыл новое поколение алгоритма сжатия Zstandard, который, как говорят, способен полностью превзойти все основные алгоритмы сжатия.

√ Фильтр Блума: фильтр O(1) для больших данных.

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

 

  • инженер по большим данным

Для инженера больших данных вы должны иметь как минимум следующие навыки.

  • Язык на основе JVM: Доля языков на основе JVM в текущей экосистеме больших данных чрезвычайно велика, и не будет преувеличением сказать, что это в какой-то степени монополия. Здесь автор рекомендует изучить Java или Scala, а вот с такими языками, как Clojure, не так-то просто начать, поэтому я не рекомендую вам их использовать. Кроме того, сегодня эпоха «мама важнее ребенка», фреймворк больших данных принесет свой язык программирования, такой как Docker на Go, Kafka на Scala. Поэтому автор здесь рекомендует вам владеть хотя бы одним языком на основе JVM. Стоит отметить, что вы должны понимать многопоточную модель и модель памяти этого языка.Режим обработки многих фреймворков больших данных фактически аналогичен режиму многопоточной обработки на уровне языка, но фреймворк больших данных расширяет их. к многомашинному распределению на этом уровне.

Автор рекомендует: Изучайте Java или Scala.

  • Платформа вычислительной обработки. Строго говоря, она делится на автономную пакетную обработку и потоковую обработку. Потоковая обработка — это будущая тенденция, и вам рекомендуется изучить ее; в то время как автономная пакетная обработка почти устарела, а ее идея пакетной обработки не может обрабатывать бесконечные наборы данных, поэтому область применения сокращается. Фактически Google официально отказался от офлайн-обработки, представленной MapReduce внутри компании. Поэтому, если вы хотите изучить технологию обработки больших данных, необходимо освоить структуру потоковой обработки в реальном времени. Текущие основные платформы включают Apache Samza, Apache Storm, Apache Spark Streaming и Apache Flink, которые были в центре внимания в прошлом году. Конечно Апач Kafka также запустила собственную потоковую платформу Kafka Streams.

Автор рекомендует: Изучите один из Flink, Spark Streaming или Kafka Streams. Кроме того, ознакомьтесь со статьей Google «Мир за пределами пакетной обработки: Streaming 101» по адресу https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-101.

  • Платформа распределенного хранения: хотя MapReduce немного устарела, HDFS, еще один краеугольный камень Hadoop, по-прежнему сильна и является самой популярной распределенной средой хранения в сообществе с открытым исходным кодом, и определенно стоит потратить время на ее изучение. Если вы хотите углубиться в изучение, обязательно прочтите документ Google GFS (https://static.googleusercontent.com/media/research.google.com/en//archive/gfs-sosp2003.pdf). Конечно, в мире с открытым исходным кодом существует множество сред распределенного хранения, и OceanBase от Alibaba в Китае — одна из них.

Автор рекомендует: Изучите HDFS.

  • Фреймворк планирования ресурсов: Docker был в огне последние год или два. Различные компании разрабатывают контейнерные решения на основе Docker.Самая известная платформа планирования контейнеров с открытым исходным кодом — это Kubernetes, а также YARN от Hadoop и Apache Mesos. Последние два могут планировать не только контейнерные кластеры, но и неконтейнерные кластеры, которые стоит изучить.

Автор рекомендует: Изучите ПРЯЖУ.

  • Распределенная структура координации: есть некоторые общие функции, которые необходимо реализовать во всех основных распределенных средах больших данных, таких как обнаружение сервисов, выбор лидера, распределенные блокировки, хранилище KV и т. д. Эти возможности облегчают разработку распределенных структур координации. Самый старый и известный — Apache Zookeeper, а новые — Consul, Etcd и т. д. Чтобы научиться инженерии больших данных, необходимо понять структуру распределенной координации, и в некоторой степени ее следует глубоко понять.

Автор рекомендует: Изучите ZooKeeper — его требуют слишком многие фреймворки для работы с большими данными, такие как Kafka, Storm, HBase и т. д.

  • База данных KV: Memcache и Redis типичны, особенно Redis быстро развивается. Простой дизайн API Redis и высокопроизводительный TPS пользуются все большей популярностью у пользователей. Даже если вы не изучаете большие данные, изучение Redis очень полезно.

Автор рекомендует: Для изучения Redis, если вы хорошо владеете языком C, лучше всего ознакомиться с исходным кодом, а исходников не так много.

  • Столбчатая база данных хранения: я потратил много времени на изучение Oracle, но должен признать, что текущая реляционная база данных постепенно исчезла из поля зрения людей, и существует слишком много решений для замены РСУБД. Люди разрабатывают столбчатое хранилище из-за того недостатка, что хранилище строк не подходит для специальных запросов больших данных.Типичной базой данных столбцового хранилища является HBase сообщества с открытым исходным кодом. На самом деле концепция столбцового хранилища тоже взята из статьи Google «Google BigTable». //архив /bigtable-osdi06.pdf).

Автор рекомендует: Изучите HBase, наиболее широко используемую колоночную систему хранения данных с открытым исходным кодом.

  • Очередь сообщений: в процессе проектирования больших данных очередь сообщений незаменима как основная система для «сбривания пиков и заполнения впадин».В настоящее время существует множество решений в этой области, включая ActiveMQ, Kafka и так далее. Внутренний Alibaba также имеет открытый исходный код RocketMQ. Лидер среди них — Apache Kafka. Многие дизайнерские идеи Kafka особенно подходят для концепции дизайна распределенной потоковой обработки данных. Неудивительно, что Джей Крепс, оригинальный автор Кафки, сегодня является главным богом потокового вещания в реальном времени.

Автор рекомендует: Изучение Kafka позволяет не только легко найти работу (почти все резюме по набору больших данных требуют знания Kafka :-)), но и глубже понять парадигму обработки данных, основанную на методе резервного копирования журнала по аналогии.

  • Аналитик больших данных или Data Scientist

Чтобы стать специалистом по данным, вы должны иметь как минимум следующие навыки.

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

Автор рекомендует: просмотрите версию Advanced Mathematics в Тонцзи, и, если у вас есть условия, вы можете пойти на Coursea, чтобы изучить курс исчисления Пенсильванского университета. Рекомендуется изучать линейную алгебру Стрэнга "Введение в линейную алгебру" - это самый классический учебник, никому!

  • Математическая статистика: базовое понимание теории вероятностей и различных статистических методов, например, как рассчитать байесовскую вероятность? Каково распределение вероятностей? Хотя мастерство не требуется, знание соответствующего фона и терминологии является обязательным.

Автор рекомендует: Найдите копию «Теории вероятностей» и изучите ее еще раз.

  • Фреймворки интерактивного анализа данных: речь идет не о SQL или запросах к базе данных, а о фреймворках аналитического взаимодействия, таких как Apache Hive или Apache Kylin. В сообществе с открытым исходным кодом есть много подобных фреймворков, которые могут использовать традиционные методы анализа данных для выполнения анализа данных или интеллектуального анализа больших данных. У автора есть опыт работы с Hive и Kylin. Однако Hive, особенно Hive1, основан на MapReduce, и его производительность не особенно высока.Kylin использует концепцию куба данных в сочетании со звездной моделью, что позволяет достичь скорости анализа с чрезвычайно низкой задержкой.Кроме того, Kylin является первой командой R&D основной силой которого является китайский инкубатор Apache, поэтому он привлекает все больше и больше внимания.

Автор рекомендует: Сначала изучите Hive, если у вас есть время, изучите Kylin и лежащие в его основе идеи интеллектуального анализа данных.

  • Фреймворк машинного обучения: машинное обучение сейчас очень горячо во вселенной.Все говорят о машинном обучении и искусственном интеллекте, но я всегда думаю, что машинное обучение — это то же самое, что и облачные вычисления несколько лет назад. Но никогда не помешает начать запасаться машинным обучением уже сейчас. Когда дело доходит до фреймворков машинного обучения, есть много знакомых, включая TensorFlow, Caffe8, Keras9, CNTK10, Torch711 и т. д., среди которых лидирует TensorFlow.

Автор рекомендует: вы можете выбрать платформу машинного обучения для обучения, но большинство этих платформ инкапсулируют различные алгоритмы машинного обучения для использования пользователями, поэтому лучше учиться на принципах алгоритмов машинного обучения.Например: курсы Udacity очень начального уровня Обучающие курсы (https://classroom.udacity.com/courses/ud120), лучший в настоящее время вводный курс в области машинного обучения, а именно «Машинное обучение доктора Ву Энда», изучение библиотеки Python scikit-learn (http:/ /scikit-learn .org/stable/); поищите книгу, в Китае есть «Машинное обучение» Чжоу Чжихуа, и вы также можете рассчитывать на новую книгу Ву Энда «Машина». Изучение тоски»; наконец, если вы чувствуете, что освоили это, вы можете попробовать бросить вызов Kaggle (https://www.kaggle.com/).

  • Суммировать

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

————

Эта статья взята из общедоступной учетной записи «Технический анализ Big Data Kafka» (идентификатор общедоступной учетной записи: gh_3af7b8516eec Имя общедоступной учетной записи: Обмен технологиями Big data Kafka). Пожалуйста, обратите внимание на готовящуюся оригинальную книгу автора"Apache Kafka в действии". Эта книга основана на Apache Kafka версии 1.0.0 и написана участником Kafka.Начиная с основных концепций и функций Kafka, эта книга подробно знакомит с развертыванием, разработкой, эксплуатацией, мониторингом, отладкой, оптимизацией и принципами проектирования важных компоненты Кафки.Приведен информативный кейс. Она подходит не только в качестве вводной книги по Kafka, но и для справочного чтения системными архитекторами и передовыми инженерами-разработчиками. Если вы все еще сомневаетесь в ценности больших данных, вы можете нажать Прочтите исходный текст и прочтите «Управление данными: от метода к практике» и в полной мере узнайте, как компании и отдельные лица будут добиваться решающего роста в мире будущего, построенном на данных.

  • Введение. Эта книга представляет собой практический справочник и справочник, охватывающий все аспекты Apache Kafka. На основе типичных сценариев использования автор дает более полное объяснение всей технической системы Кафки, чтобы читатели могли сделать выводы из одного случая и применить его непосредственно на практике. В то же время в книге также подробно обсуждаются принципы проектирования Kafka и его компоненты потоковой обработки, а также приводятся подробные примеры. Эта книга разделена на 10 глав: в главе 1 дается всестороннее введение в систему механизма сообщений, основные концепции и функции Kafka, и она быстро вводит читателей в мир Kafka; в главе 2 кратко рассматривается история разработки Apache Kafka; в главе 3 подробно знакомит с Кафкой Построение кластерной среды; в главах 4 и 5 подробно рассматривается использование клиента Kafka; в главе 6 читатель знакомится с внутренними принципами проектирования Kafka; в главах с 7 по 9 объясняются управление, мониторинг и настройка клиента. Кластер Kafka с примерами Глава 10 знакомит с новыми потоковыми компонентами Kafka. Эта книга подходит для всего технического персонала, который интересуется облачными вычислениями и обработкой больших данных, особенно для технического персонала, который интересуется механизмами сообщений, технологиями потоковой обработки и фреймворками.

Нажмите и удерживайте QR-код, следуйте"Вилла с передовыми технологиями», чтобы первыми получать новые знания, разбираться в книжных новостях и знакомиться с большим кофе.

Любое величие начинается непреднамеренно, вы можете пропустить его непреднамеренно или начать непреднамеренно...