Знакомство с Хадупом

задняя часть модульный тест Hadoop HDFS

Исходные большие данные

Что такое большие данные?

大数据是一个概念也是一门技术,是在以Hadoop为代表的大数据平台框架上进行各种数据分析的技术。
大数据包括了以Hadoop和Spark为代表的基础大数据框架。
还包括实时数据处理、离线数据处理;数据分析,数据挖掘和用机器算法进行预测分析等技术。

Изучение основных требований

会 Linux 常用命令
有一定的 Python 或者 Java 编程基础
对 Hadoop 有一定的了解,可以搭建自己的测试环境

Возможности и преимущества Hadoop

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

  • HDFS: распределенная файловая система, хранящая огромные объемы данных.
  • MapReduce: платформа параллельной обработки для декомпозиции и планирования задач.

Связанные инструменты с открытым исходным кодом:

  • HBase отказывается от характеристик транзакций, стремится к более высокому расширению, обеспечивает произвольное чтение и запись данных и доступ в реальном времени, а также реализует функцию чтения и записи табличных данных.
  • Zookeeper отслеживает состояние каждого узла Hadoop, управляет конфигурацией кластера и поддерживает согласованность данных между узлами.
  • hive преобразует простые операторы sql в задачи Hadoop, снижая порог для использования Hadoop.

Установка Hadoop

1. 准备Linux环境
2. 安装JDK Java编写
3. 配置Hadoop

Установка и настройка Hadoop:

  1. Загрузите установочный пакет hdoop и разархивируйте его.
  2. Настройте файл hdoop-env.sh, целью которого является настройка jdk и настройка места установки haddoop в профиле.
    export JAVA_HOME=安装好的JDK(配置的JAVA_HOME)
    export HADOOP_HOME=/opt/hadoop-1.2.1
    export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$PATH
  3. Настройте файл core-site.xml: основной файл hdoop, который содержит порт узла и порт хоста hdoop.

    <configuration>
    <propery>
    <name>hadoop.tmp.dir</name> 
    <value>/hadoop</value> <!-- 工作目录 -->
    </propery>
    <name>dfs.name.dir</name>
    <value>/hadoop/name</value> <!-- 所有元数据的目录 -->
    <propery>
    <name>fs.default.name</name>
    <value>hdfs://imooc:9000</value>  <!-- 表示文件系统如何访问 namenode -->
    </propery>
    </configuration>
    
  4. Настройте файл hdfs-site.xml: основная информация и каталог хранилища файлов Hadoop.

    <property>
    <name>dfs.data.dir</name>
    <value>/hadoop/data</value> <!-- 文件系统的数据存放路径 -->
    </property>
    
  5. Настройте файл mapred-site.xml: номер порта вычислительного узла Hadoop.

    <property>
    <name>mapred.job.tracker</name>
    <value>imooc:9001</value>  <!-- 配置任务调度器如何访问 -->
    </property>
    
  6. формат:hadoop namenode -format

  7. запускатьhadoop:start-all.sh
  8. Посмотреть порты:jps, вы можете видеть, что пять демонов верны
  9. останавливатьсяhadoop:stop-all.sh

Ядро Hadoop HDFS

Основные понятия HDFS

  • Block Block Хранилище блоков файлов Логическая единица по умолчанию 64 МБ
  • NameNode (узел управления, в котором хранятся метаданные файла)
    • Таблица сопоставления файлов и баз данных
    • Таблица сопоставления между базами данных и узлами данных
  • DataNode (рабочий узел, хранящий блоки данных)

стратегия управления данными

  1. hdfs использует режим master-slave для управления файлами, то есть один мастер (название: сохраняет некоторую базовую информацию и метаданные узла данных) и несколько подчиненных устройств (узел данных: реальный блок хранения, в котором хранятся реальные данные)
  2. hdfs сохраняет три файла по умолчанию, два сохраняются на одном компьютере, а другой (файл резервной копии) сохраняется на другом компьютере, чтобы гарантировать, что существование данных может быть сохранено, когда один компьютер зависает
  3. namenade также имеет резервный узел: Secondary NameNode. Когда namenode зависает, вторичный NameNode становится ролью nameNode для управления данными.
  4. datandoe будет использовать метод пульса, чтобы время от времени сообщать свою основную информацию на namenode, например, нормально ли работает сеть и правильно ли работает.

Процесс чтения и записи файлов в HDFS

Клиент отправляет запрос на чтение и запись, namenode возвращает его клиенту по метаданным, скачивает нужный блок и собирает его

Процесс чтения файлов HDFS:

  1. Клиент инициирует независимый запрос к namenode и сообщает namenode имя файла и путь;
  2. Namenode запрашивает метаданные и возвращает базу данных клиенту;
  3. На этом этапе клиент знает, какие блоки содержит файл и в каких узлах данных эти блоки можно найти;

Процесс записи файлов HDFS:

  1. Клиент разбивает файл на куски
  2. Клиент уведомляет NameNode, и NameNode возвращает доступный адрес узла DataNode.
  3. Клиент записывает блок данных в доступный DataNode в соответствии с возвращенным DataNode.
  4. Поскольку существует три копии блока данных, каждый блок данных будет скопирован из двух других копий через конвейер репликации и сохранен.
  5. Обновить метаданные NameNode

Особенности HDFS

  1. Избыточность данных, аппаратная отказоустойчивость (гарантируется в трех экземплярах)
  2. Доступ к потоковым данным: запись один раз, чтение много раз, один раз запись не может быть изменена, она может быть обработана только путем записи в новый блок и удаления старого блока
  3. Хранить большие файлы (особенно подходит, т.к. много маленьких файлов, это увеличивает нагрузку на NameNode)

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

Использование HDFS

Он предоставляет интерфейс оболочки, который может выполнять операции командной строки.Обычно используемые команды оболочки Hadoop:

#hadoop fs -format     #格式化操作
#hadoop fs -ls /        #展示文件
#hadoop fs -cat input/hsdf-site.xml #查看Hadoop里面的指定文件
#hadoop fs -mkdir input  #未指明目录,表示在Hadoop的文件系统下的默认目录/user/root下新建
#hadoop fs -put hdsf-site.xml input/  #上传文件到Hadoop
#hadoop fs -get hdfs-site.xml hdfs-site2.xml #从Hadoop下载文件
#hadoop dfsadmin -report #查看HADF使用情况(所有信息)

Ядро Hadoop MapReduce

Принцип MapReduce

Принцип Mapreduce: разделяй и властвуй, большая задача разбивается на несколько подзадач (map), а после параллельного выполнения результаты объединяются (reduce).
eg:做统计的时候,把统计的文件拆分,然后分别统计每一个数据出现的次数,然后合并拆分项,就可以统计每一个数据出现的总次数。
Перед формальным выполнением Map входные данные должны быть «шардированы». Так называемое сегментирование заключается в разделении входных данных на блоки данных одинакового размера, и каждый блок обрабатывается как входные данные одного Map Worker, так что несколько Map Workers могут работать одновременно.
После шардинга несколько Map Workers могут работать одновременно. каждая карта После считывания соответствующих данных Worker выполняет расчетную обработку и, наконец, выводит ее в Reduce. Когда Map Worker выводит данные, ему необходимо указать ключ для каждого вывода данных. Это ключевое значение определяет, на какой рабочий процесс сокращения будут отправлены эти данные. Существует отношение «многие к одному» между значениями ключа и работниками сокращения. Данные с одним и тем же ключом будут отправлены одному и тому же работнику сокращения. Один работник сокращения может получать данные с несколькими значениями ключа.
Прежде чем перейти к фазе сокращения, платформа MapReduce сортирует данные в соответствии со значением ключа, чтобы данные с одним и тем же ключом располагались рядом друг с другом. Если пользователь укажет «объединитель» (Combiner), платформа вызовет объединитель для агрегирования данных с одним и тем же ключом. Логика комбинатора может быть реализована пользователем. Эту часть процесса часто называют «перетасовкой».
Следующим шагом является переход к фазе сокращения. Данные одного и того же ключа будут поступать на один и тот же Reduce Рабочий. Один и тот же Reduce Worker будет получать данные от нескольких Map Workers. Каждый рабочий процесс Reduce будет выполнять операции Reduce над несколькими данными с одним и тем же ключом. Наконец, несколько фрагментов данных ключа станут значением после действия сокращения.

Работающий процесс MapReduce

Job & Task:
ОдинJob(задача, домашнее задание) делится на несколькоTask, Задача делится наMapTaskа такжеReduceTask

Процесс выполнения задания mapReduce

@mapReduce

JobTracker: Разделите задание на несколько задач Map and Reduce; назначьте задачи Map и Reduce

  • планирование работы
  • Ставьте задачи, следите за задачами
  • Мониторинг состояния TaskTracker

TaskTracker: задача Map распространяется на следующий TaskTracker для выполнения фактической задачи; TaskTracker поддерживает соответствующую связь с DataNode

  • выполнять задачи
  • В направленииJobTrackerсообщить о статусе задачи

Механизм отказоустойчивости mapReduce

  1. Повторный тест: если узел TaskTracker выйдет из строя во время теста, mapreduce повторно выполнит задачу, и если он по-прежнему не будет работать после четырех выполнений, он прекратит выполнение задачи.
  2. Предполагаемый тест: если taskTracker выполняется очень медленно, mapReduce перезапустит узел taskTracker для расчета той же задачи. Исходный узел продолжает выполняться. Если перезапущенный taskTracker завершит выполнение первым, mapReduce остановится после получения результата. Исходный очень медленный taskTracker узел