SlideShare a Scribd company logo
Методы распределенной обработки
больших объемов данных в Hadoop
Москва 2014
Лекция 3: Распределенная файловая система HDFS
Архитектура HDFS
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
HDFS
• Hadoop Distributed File System
• Для пользователя как “один большой диск”
• Работает поверх обычных файловых систем
– Ext3, Ext4, XFS
• Основывается на архитектуре Google's Filesystem
GFS
– research.google.com/archive/gfs-sosp2003.pdf
• Fault Tolerant
– Умеет справляться с выходом из строя дисков,
машин и т.д.
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Используется обычное “железо”
• “Дешевое”серверное оборудование
– Нет суперкомпьютерам!
– Нет десктопам!
– Да обычным (ненадежным) серверам!
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
HDFS хорошо подходит для…
• Хранения больших файлов
– Терабайты, петабайты…
– Миллионы (но не миллиарды) файлов
– Файлы размером от 100 Мб
• Стриминг данных
– Паттерн “write once / read-many times”
– Оптимизация под последовательное чтение
• Нет операциям произвольного чтения
– Операция append появилась в Hadoop 0.21
• Обычные сервера
– Менее надежные, чем суперкомпьютеры
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
HDFS не подходит для…
• Low-latency reads
– Высокая пропускная способность большого объема данных
(high-throughput) вместо небольшого времени доступа к
небольшим порциям данных (low latency)
– HBase помогает решать эту задачу
• Большое количество небольших файлов
– Лучше миллион больших файлов, чем миллиард маленьких
• Напр. каждый файл размером от 100Мб
• Многопоточная запись
– Один процесс записи на файл
– Данные дописываются в конец файла
• Нет поддержки записи по смещению
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Демоны HDFS
• Для управления файловой системой есть три типа демонов
– Namenode
• Отвечает за файловое пространство (namespace), мета-ифномрацию и
расположение блоков файлов
• Запускается на 1й (выделенной) машине
– Datanode
• Хранит и отдает блоки данных
• Отправляет ответы о состоянии на Namenode
• Запускается обычно на всех машинах кластера
– Secondary Namenode
• Периодически обновляет fsimage
• Требует то же железо, что и Namenode
• (!) Не используется для high-availability, т.е. это не backup для Namenode
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Демоны HDFS
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Secondary
Namenode
Namenode
Datanode 1 Datanode 2 Datanode 3…
Файлы и блоки
• Файлы в HDFS состоят из блоков
– Блок – единица хранения данных
• Управляется через Namenode
• Хранится на Datanode
• Реплицируются по машинам в процессе записи
– Один и тот же блок хранится на нескольких Datanode
– Фактор репликации по умолчанию равен 3
– Это нужно для fault-tolerance и упрощения доступа
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Rack #NRack #1
Файлы и блоки
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Namenode
Datanode
B1
DatanodeDatanode
B1
DatanodeDatanode
B1
large_file.txt = block 1 + block 2
Один и тот же блок
B2
B2B2
Блоки в HDFS
• Стандартный размер блоков 64Мб или 128Мб
• Основной мотив этого – снизить стоимость seek
time по сравнению со скоростью передачи
данных (transfer rate)
– 'Time to transfer' > 'Time to seek'
• Например, пусть будет
– seek time = 10ms
– transfer rate = 100 MB/s
• Для достижения seek time равного 1% от transfer
rate размер блока должен быть 100Мб
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Репликация блоков
• Namenode определяет, куда копировать реплики
блоков
• Размещение блоков зависит от того, в какой стойке
стоит сервер (rack aware)
– Баланс между надежностью и производительностью
• Попытка снизить нагрузку на сеть (bandwidth)
• Попытка улучшить надежность путем размещения реплик в
разных стойках
– Фактор репликации по умолчанию равен 3
• 1-я реплика на локальную машину
• 2-я реплика на другую машину из той же стойки
• 3-я реплика на машину из другой стойки
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Клиенты, Namenode и Datanodes
• Namenode не выполняет непосредственно
операций чтения/записи данных
– Это одна из причин масштабируемости Hadoop
• Клиент обращается к Namenode для
– обновления неймспейса HDFS
– для получения информации о размещении
блоков для чтения/записи
• Клиент взаимодействует напрямую с
Datanode для чтения/записи данных
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
HDFS: чтение файла
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
NamenodeClient
DatanodeDatanodeDatanode
1
2
3
1. Получить
расположение блоков
2. Прочитать 1й блок
файла
3. Прочитать 2й блок
файла
HDFS: запись файла
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
NamenodeClient
DatanodeDatanodeDatanode
1
2
1. Создать новый файл в
namespace на NN и
определить топологию
блоков
2. Отправить данные на 1-ю DN
3. Отправить данные на 2-ю DN
4. Отправить данные на 3-ю DN
5. Подтверждение
Success/Failure
6. Подтверждение
Success/Failure
7. Подтверждение
Success/Failure
7
3
6
4
5
Namenode: использование памяти
• Для быстрого доступа вся мета-информация о блоках
хранится в ОЗУ Namenode
– Чем больше кластер, тем больше ОЗУ требуется
• Лучше миллионы больших файлов (сотни мегабайт), чем миллиарды
маленьких
• Работает на кластерах из сотен машин
• Hadoop 2+
– Namenode Federation
• Каждая Namenode управляет частью блоков
• Горизонтальное масштабирование Namenode
– Поддержка кластеров из тысячи машин
– Детали тут: http://hadoop.apache.org/docs/r2.0.2-alpha/hadoop-
yarn/hadoop-yarn-site/Federation.html
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Namenode: использование памяти
• Изменение размера блока влияет на максимальный
размер FS
– Увеличение размера блока с 64Мб до 128Мб уменьшает
число блоков и существенно увеличивает размер места,
которое NN может обслуживать
– Пример:
• Пусть у нас есть 200Тб = 209,715,200 Мб
• При размере блока 64Мб это соответствует 3,276,800 блоков
– 209,715,200Mб / 64Mб = 3,276,800 блоков
• При размере блока 128Мб это соответствует 1,638,400 блоков
– 209,715,200Mб / 128Mб = 1,638,400 блоков
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Fault-tolerance в Namenode
• Процесс демона NN должен быть запущен все время
– Если демон падает, то HDFS не работает (и обычно весь кластер
тоже)
• Namenode – это единая точка отказа (single point of failure)
– Должна работать на отдельной надежной машине
– Обычно, это не бывает проблемой
• Hadoop 2+
– High Availability Namenode
• Процесс Active Standby всегда запущен и берет на себя управления в случае
падения NN
• Все еще в процессе тестирования
– Более подробно тут:
• http://hadoop.apache.org/docs/r2.0.2-alpha/hadoop-yarn/hadoop-yarn-
site/HDFSHighAvailability.html
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Доступ к HDFS
• Способы доступа
– Direct Access
• Взаимодействует с HDFS с помощью нативного
клиента
• Java, C++
– Через Proxy Server
• Досутп к HDFS через Proxy Server – middle man
• Серверы REST, Thrift и Avro
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Direct Access
• API для Java и C++
• Клиент запрашивает метаданные (такие, как расположение
блоков) от NN
• Клиент напрямую запрашивает данные от DN
• Java API
– Наиболее часто используется
• Используется для MapReduce
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Namenode
Datanode
Datanode
Java Client
Java Client
Java Client
. . . . . .
Доступ через Proxy Server
• Клиент работает через внешний Proxy Server
– Т.о. должна быть независимость от языка
• Существует несколько серверов в поставке с Hadoop
– Thrift – язык определения интерфейса
– WebHDFS REST – ответы в формате JSON, XML или Protocol
Buffers
– Avro – механизм сериализации
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Namenode
Datanode
Datanode
Client
Client
Client
Proxy
Server
. . . . . .
HDFS Shell
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Команды Shell
• Взаимодействие с FS через стандартный unix-shell
• Использование:
$hdfs dfs -<command> -<option> <URI>
– Example $hdfs dfs -ls /
• URI usage:
– HDFS: $hdfs dfs -ls hdfs://localhost/to/path/dir
– Local: $hdfs dfs -ls file:///to/path/file3
– Схема и имя хоста NN опиционально, по-умолчанию
используется параметр из конфигурации
• В core-site.xml - fs.default.name property
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Hadoop URI
scheme://autority/path
hdfs://localhost:8020/user/home
scheme authority HDFS path
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Команды в shell
• Большинство команд ведет себя схожим
образом, что и команды в Unix
– cat, rm, ls, du …
• Поддержка специфичных для HDFS операций
– Напр., смена фактора репликации
• Вывод списка команд
– $ hdfs dfs –help
• Показать детальную информацию по команде
– $ hdfs dfs -help <command_name>
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Основные команды в shell
• cat – вывод источника в stdout
– Весь файл: $hdfs dfs -cat /dir/file.txt
– Полезно вывод перенаправить через pipe в less, head, tail
и т.д.
– Получить первые 100 строк из файла
• $hdfs dfs -cat /dir/file.txt | head -n 100
• ls – отобразить файловую статистику, для директории
отобразить вложенные директории и файлы
– $hdfs dfs -ls /dir/
• mkdir – создать директорию
– $hdfs dfs -mkdir /dir
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Копирование данных в shell
• cp – скопировать файлы из одного места в другое
– $hdfs dfs -cp /dir/file1 /otherDir/file2
• mv – перемещение файла из одного места в другое
– $hdfs dfs -mv /dir/file1 /dir2
• put – копирование файла из локальной FS в HDFS
– $hdfs dfs -put localfile /dir/file1
– copyFromLocal
• get – копирование файла из HDFS в локальную FS
– $hdfs dfs -get /dir/file1 localfile
– copyToLocal
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Удаление и статистика в shell
• rm – удалить файл (в корзину)
– $hdfs dfs -rm /dir/file
• rm -r – удалить рекурсивно директорию
– $hdfs dfs -rm -r /dir
• du – отобразить размер файла или директории в
байтах
– $hdfs dfs -du /dir/
• du -h – отобразить размер файла или директории в
удобно-читаемом формате
– $hdfs dfs -du –h /dir/
65M /dir
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Остальные команды в shell
• Другие команды
– chmod, count, test, tail и т.д.
• Чтобы узнать больше
– $hdfs dfs -help
– $hdfs dfs -help <command>
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Команда fsck
• Проверка неконсистентности файловой системы
• Показывает проблемы
– Отсутствующие блоки
– Недореплицированные блоки
• Не устраняет проблем, только информация
– Namenode попытается автоматически исправить
проблемы
• $ hdfs fsck <path>
– Напр., $ hdfs fsck /
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Права в HDFS
• Ограничения на уровне файла/директории
– Сходство с моделью прав в POSIX
– Read (r), Write (w) и Execute (x)
– Разделяется на пользователя, группу и всех остальных
• Права пользователя определяются исходя из прав той ОС, где он
запускает клиентское приложение
• Авторизация через Kerberos
– Hadoop 0.20.20+
– http://hadoop.apache.org/common/docs/r0.23.0/hadoop-yarn/hadoop-
yarnsite/ClusterSetup.html
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
[cloudera@localhost ~]$ hadoop fs -ls /user/cloudera/wordcount/output
Found 3 items
-rw-r--r-- 3 cloudera cloudera 0 2014-03-15 11:56 /user/cloudera/wordcount/output/_SUCCESS
drwxr-xr-x - cloudera cloudera 0 2014-03-15 11:56 /user/cloudera/wordcount/output/_logs
-rw-r--r-- 3 cloudera cloudera 31 2014-03-15 11:56 /user/cloudera/wordcount/output/part-00000
Команда DFSAdmin
• Команды для администрирования HDFS
– $hdfs dfsadmin <command>
– Напр.: $hdfs dfsadmin –report
• report – отображает статистику по HDFS
– Часть из этого также доступна в веб-интерфейсе
• safemode – переключения между режимом
safemode для проведения административных
работ
– Upgrade, backup и т.д.
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Балансер HDFS
• Блоки в HDFS могут быть неравномерно
распределены по всем Datanode’ам кластера
– К примеру, при добавлении новых машин они будут
какое-то время почти пустыми, т.к. новые данные
будут записываться исходи из топологии
• Балансер – это утилита, которая автоматически
анализирует расположение блоков в HDFS и
старается его сбалансировать
– $ hdfs balancer
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
HDFS API
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
File System Java API
• org.apache.hadoop.fs.FileSystem
– Абстрактный класс, которые представляет
абстрактную файловую систему
– (!) Это именно класс, а не интерфейс
• Реализуется в различных вариантах
– Напр., локальная или распределенная
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Реализации FileSystem
• Hadoop предоставляет несколько конкретных реализаций
– org.apache.hadoop.fs.LocalFileSystem
• Подходит для нативных FS, использующих локальные диски
– org.apache.hadoop.hdfs.DistributedFileSystem
• Hadoop Distributed File System (HDFS)
– org.apache.hadoop.hdfs.HftpFileSystem
• Доступ к HDFS в read-only режиме через HTTP
– org.apache.hadoop.fs.ftp.FTPFileSystem
• Файловая система поверх FTP-сервера
• Различные реализации для разных задач
• Для работы с HDFS обычно используется
– org.apache.hadoop.hdfs.DistributedFileSystem
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Пример SimpleLocalLs.java
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
public class SimpleLocalLs {
public static void main(String[] args) throws Exception{
Path path = new Path("/");
if ( args.length == 1 ){
path = new Path(args[0]);
}
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
FileStatus [] files = fs.listStatus(path);
for (FileStatus file : files ){
System.out.println(file.getPath().getName());
}
}
}
FileSystem API: Path
• Объект Path в Hadoop представляет файл или
директорию
– java.io.File сильно завязан на локальную FS
• Path – это на самом деле URI в FS
– HDFS: hdfs://localhost/user/file1
– Local: file:///user/file1
• Пример:
– new Path("/test/file1.txt");
– new Path("hdfs://localhost:9000/test/file1.txt");
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Объект Configuration
• Объект Configuration хранит конфигурацию сервера и клиента
– Довольно много где используется в Hadoop
• HDFS, MapReduce, Hbase,..
• Использует простую парадигму key-value
– Является враппером надо java.util.Properties,
– Который в свою очередь враппер над java.util.Hashtable
• Получения значения параметра
– String name = conf.get("fs.default.name");
• returns null если свойства не существует
• Получения значения параметра и вернуть значение по-умолчанию, если
не существует
– String name = conf.get("fs.default.name“, “hdfs://localhost:9000”);
• Также есть типизированные варианты
– getBoolean, getInt, getFloat и т.п.
• float size = conf.getFloat("file.size");
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Объект Configuration
• Обычно инициализируется значениями через
конфигурационный файлы из CLASSPATH (напр.,
conf/coresite.xml и conf/hdfs-site.xml)
– Configuration conf = new Configuration();
conf.addResource(
new Path(HADOOP_HOME + "/conf/coresite.xml"));
• conf.addResource() может принимать как String, так и Path
– conf.addResource("hdfs-site.xml")
– conf.addResource(new Path("/my/location/site.xml")
• По-умолчанию загружает
– core-default.xml
• Расположен в hadoop-common-X.X.X.jar/core-default.xml
– core-site.xml
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Чтение данных из файла
• Создать объект FileSystem
• Открыть InputStream, указывающий на Path
• Скопировать данные по байтам используя
IOUtils
• Закрыть InputStream
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Пример ReadFile.java
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
public class ReadFile {
public static void main(String[] args) throws IOException {
Path file = new Path("/path/to/file.txt");
FileSystem fs = FileSystem.get(new Configuration()); // Open FileSystem
InputStream input = null;
try {
input = fs.open(file); // Open InputStream
IOUtils.copyBytes(input, System.out, 4096); // Copy from Input to Output
Stream
} finally {
IOUtils.closeStream(input); // Close stream
}
}
}
Запись данных в файл
• Создать объект FileSystem
• Открыть OutputStream
– Указывает на Path из FileSystem
– Используем FSDataOutputStream
– Автоматически создаются все директори в пути,
если не существуют
• Копируем данные по байтам используя
IOUtils
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Пример WriteToFile.java
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
public class WriteToFile {
public static void main(String[] args) throws IOException {
String text = "Hello world in HDFS!n";
InputStream in = new BufferedInputStream(
new ByteArrayInputStream(text.getBytes()));
Path file = new Path("/path/to/file.txt");
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf); // Create FileSystem
FSDataOutputStream out = fs.create(file); // Open OutputStream
IOUtils.copyBytes(in, out, conf); // Copy Data
}
}
FileSystem: запись данных
• fs.append(path) – дописать к существующему
файлу
– Поддержка для HDFS
• Нельзя записать в середину файла
• FileSystem.create(Path) создает все
промежуточные директории для заданного
каталога (по умолчанию)
– Если это не нужно, то надо использовать
• public FSDataOutputStream create(Path f, boolean overwrite)
• overwrite = false
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
FileSystem: подстановки (globbing)
• FileSystem имеет поддержку матчинга имени файла
по заданному паттерну используя метод globStatus()
– FileStatus [] files = fs.globStatus(glob);
• Используется для выбора списка файлов по шаблону
• Примеры шаблонов
– ? – любой один символ
– * - любые 0 и больше символов
– [abc] – любой символ из набора в скобках
• [a-z]
– [^a] – любой символ, кроме указанного
– {ab,cd} – любая строка из указанных в скобках
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
Книги
Hadoop: The Definitive Guide
Tom White (Author)
O'Reilly Media; 3rd Edition
Chapter 3: The Hadoop
Distributed Filesystem
Chapter 4: Hadoop I/O
Вопросы?
ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS

More Related Content

What's hot

Ozone- Object store for Apache Hadoop
Ozone- Object store for Apache HadoopOzone- Object store for Apache Hadoop
Ozone- Object store for Apache Hadoop
Hortonworks
 
Room 1 - 2 - Nguyễn Văn Thắng & Dzung Nguyen - Proxmox VE và ZFS over iscsi
Room 1 - 2 - Nguyễn Văn Thắng & Dzung Nguyen - Proxmox VE và ZFS over iscsiRoom 1 - 2 - Nguyễn Văn Thắng & Dzung Nguyen - Proxmox VE và ZFS over iscsi
Room 1 - 2 - Nguyễn Văn Thắng & Dzung Nguyen - Proxmox VE và ZFS over iscsi
Vietnam Open Infrastructure User Group
 
10年効く分散ファイルシステム技術 GlusterFS & Red Hat Storage
10年効く分散ファイルシステム技術 GlusterFS & Red Hat Storage10年効く分散ファイルシステム技術 GlusterFS & Red Hat Storage
10年効く分散ファイルシステム技術 GlusterFS & Red Hat Storage
Etsuji Nakai
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
Ji-Woong Choi
 
Hadoop et son écosystème - v2
Hadoop et son écosystème - v2Hadoop et son écosystème - v2
Hadoop et son écosystème - v2
Khanh Maudoux
 
Evolution of containers to kubernetes
Evolution of containers to kubernetesEvolution of containers to kubernetes
Evolution of containers to kubernetes
Krishna-Kumar
 
インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門Akihiro Kuwano
 
Ozone and HDFS's Evolution
Ozone and HDFS's EvolutionOzone and HDFS's Evolution
Ozone and HDFS's Evolution
DataWorks Summit
 
HDFS Namenode High Availability
HDFS Namenode High AvailabilityHDFS Namenode High Availability
HDFS Namenode High Availability
Hortonworks
 
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Cloudera Japan
 
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
NTT DATA Technology & Innovation
 
Docker Networking
Docker NetworkingDocker Networking
Docker Networking
Kingston Smiler
 
Hadoop and friends : introduction
Hadoop and friends : introductionHadoop and friends : introduction
Hadoop and friends : introductionfredcons
 
PostgreSQL
PostgreSQLPostgreSQL
Achieving HBase Multi-Tenancy with RegionServer Groups and Favored Nodes
Achieving HBase Multi-Tenancy with RegionServer Groups and Favored NodesAchieving HBase Multi-Tenancy with RegionServer Groups and Favored Nodes
Achieving HBase Multi-Tenancy with RegionServer Groups and Favored Nodes
DataWorks Summit
 
Hadoop technology
Hadoop technologyHadoop technology
Hadoop technology
tipanagiriharika
 
Hadoop hive presentation
Hadoop hive presentationHadoop hive presentation
Hadoop hive presentation
Arvind Kumar
 
Redis overview for Software Architecture Forum
Redis overview for Software Architecture ForumRedis overview for Software Architecture Forum
Redis overview for Software Architecture Forum
Christopher Spring
 
Cassandra導入事例と現場視点での苦労したポイント cassandra summit2014jpn
Cassandra導入事例と現場視点での苦労したポイント cassandra summit2014jpnCassandra導入事例と現場視点での苦労したポイント cassandra summit2014jpn
Cassandra導入事例と現場視点での苦労したポイント cassandra summit2014jpn
haketa
 
Facebook Messages & HBase
Facebook Messages & HBaseFacebook Messages & HBase
Facebook Messages & HBase
强 王
 

What's hot (20)

Ozone- Object store for Apache Hadoop
Ozone- Object store for Apache HadoopOzone- Object store for Apache Hadoop
Ozone- Object store for Apache Hadoop
 
Room 1 - 2 - Nguyễn Văn Thắng & Dzung Nguyen - Proxmox VE và ZFS over iscsi
Room 1 - 2 - Nguyễn Văn Thắng & Dzung Nguyen - Proxmox VE và ZFS over iscsiRoom 1 - 2 - Nguyễn Văn Thắng & Dzung Nguyen - Proxmox VE và ZFS over iscsi
Room 1 - 2 - Nguyễn Văn Thắng & Dzung Nguyen - Proxmox VE và ZFS over iscsi
 
10年効く分散ファイルシステム技術 GlusterFS & Red Hat Storage
10年効く分散ファイルシステム技術 GlusterFS & Red Hat Storage10年効く分散ファイルシステム技術 GlusterFS & Red Hat Storage
10年効く分散ファイルシステム技術 GlusterFS & Red Hat Storage
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
Hadoop et son écosystème - v2
Hadoop et son écosystème - v2Hadoop et son écosystème - v2
Hadoop et son écosystème - v2
 
Evolution of containers to kubernetes
Evolution of containers to kubernetesEvolution of containers to kubernetes
Evolution of containers to kubernetes
 
インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門インフラエンジニアのためのcassandra入門
インフラエンジニアのためのcassandra入門
 
Ozone and HDFS's Evolution
Ozone and HDFS's EvolutionOzone and HDFS's Evolution
Ozone and HDFS's Evolution
 
HDFS Namenode High Availability
HDFS Namenode High AvailabilityHDFS Namenode High Availability
HDFS Namenode High Availability
 
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理
 
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
 
Docker Networking
Docker NetworkingDocker Networking
Docker Networking
 
Hadoop and friends : introduction
Hadoop and friends : introductionHadoop and friends : introduction
Hadoop and friends : introduction
 
PostgreSQL
PostgreSQLPostgreSQL
PostgreSQL
 
Achieving HBase Multi-Tenancy with RegionServer Groups and Favored Nodes
Achieving HBase Multi-Tenancy with RegionServer Groups and Favored NodesAchieving HBase Multi-Tenancy with RegionServer Groups and Favored Nodes
Achieving HBase Multi-Tenancy with RegionServer Groups and Favored Nodes
 
Hadoop technology
Hadoop technologyHadoop technology
Hadoop technology
 
Hadoop hive presentation
Hadoop hive presentationHadoop hive presentation
Hadoop hive presentation
 
Redis overview for Software Architecture Forum
Redis overview for Software Architecture ForumRedis overview for Software Architecture Forum
Redis overview for Software Architecture Forum
 
Cassandra導入事例と現場視点での苦労したポイント cassandra summit2014jpn
Cassandra導入事例と現場視点での苦労したポイント cassandra summit2014jpnCassandra導入事例と現場視点での苦労したポイント cassandra summit2014jpn
Cassandra導入事例と現場視点での苦労したポイント cassandra summit2014jpn
 
Facebook Messages & HBase
Facebook Messages & HBaseFacebook Messages & HBase
Facebook Messages & HBase
 

Viewers also liked

Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. Spark
Technopark
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.Ru
Technopark
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)
Technopark
 
Лекция 13. YARN
Лекция 13. YARNЛекция 13. YARN
Лекция 13. YARN
Technopark
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и Hive
Technopark
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)
Technopark
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)
Technopark
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeper
Technopark
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache Mahout
Technopark
 
Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель Pregel
Technopark
 

Viewers also liked (10)

Лекция 12. Spark
Лекция 12. SparkЛекция 12. Spark
Лекция 12. Spark
 
Лекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.RuЛекция 14. Hadoop в Поиске Mail.Ru
Лекция 14. Hadoop в Поиске Mail.Ru
 
Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)Лекция 6. MapReduce в Hadoop (графы)
Лекция 6. MapReduce в Hadoop (графы)
 
Лекция 13. YARN
Лекция 13. YARNЛекция 13. YARN
Лекция 13. YARN
 
Лекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и HiveЛекция 7. Введение в Pig и Hive
Лекция 7. Введение в Pig и Hive
 
Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)Лекция 4. MapReduce в Hadoop (введение)
Лекция 4. MapReduce в Hadoop (введение)
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)Лекция 5. MapReduce в Hadoop (алгоритмы)
Лекция 5. MapReduce в Hadoop (алгоритмы)
 
Лекция 9. ZooKeeper
Лекция 9. ZooKeeperЛекция 9. ZooKeeper
Лекция 9. ZooKeeper
 
Лекция 10. Apache Mahout
Лекция 10. Apache MahoutЛекция 10. Apache Mahout
Лекция 10. Apache Mahout
 
Лекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель PregelЛекция 11. Вычислительная модель Pregel
Лекция 11. Вычислительная модель Pregel
 

Similar to Лекция 3. Распределённая файловая система HDFS

03 - Hadoop. HDFS Shell-команды
03 - Hadoop. HDFS Shell-команды03 - Hadoop. HDFS Shell-команды
03 - Hadoop. HDFS Shell-команды
Roman Brovko
 
Обзор архитектуры [файловой] системы Ceph
Обзор архитектуры [файловой] системы CephОбзор архитектуры [файловой] системы Ceph
Обзор архитектуры [файловой] системы Ceph
OSLL
 
Александр Крашенинников "Hadoop High Availability: опыт Badoo"
Александр Крашенинников "Hadoop High Availability: опыт Badoo"Александр Крашенинников "Hadoop High Availability: опыт Badoo"
Александр Крашенинников "Hadoop High Availability: опыт Badoo"
IT Event
 
Alex Krasheninnikov – Hadoop High Availability
Alex Krasheninnikov – Hadoop High AvailabilityAlex Krasheninnikov – Hadoop High Availability
Alex Krasheninnikov – Hadoop High Availability
Badoo Development
 
Administrarea DSpace
Administrarea DSpaceAdministrarea DSpace
Administrarea DSpace
Natalia Cheradi
 
12 - Hadoop. HBase и Cassandra
12 - Hadoop. HBase и Cassandra12 - Hadoop. HBase и Cassandra
12 - Hadoop. HBase и Cassandra
Roman Brovko
 
Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15
Alexey Zinoviev
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ontico
 
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Ontico
 
Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...
Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...
Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...
Lenvendo
 
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
Badoo Development
 
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)
Ontico
 
установка и настройка файлового сервера и сервера печати
установка и настройка файлового сервера и сервера печатиустановка и настройка файлового сервера и сервера печати
установка и настройка файлового сервера и сервера печатиsilkuk
 
Extreme Cloud Storage on FreeBSD, Андрей Пантюхин
Extreme Cloud Storage on FreeBSD, Андрей ПантюхинExtreme Cloud Storage on FreeBSD, Андрей Пантюхин
Extreme Cloud Storage on FreeBSD, Андрей ПантюхинFuenteovejuna
 
Linux files, file systems, block devices.
Linux files, file systems, block devices.Linux files, file systems, block devices.
Linux files, file systems, block devices.
Vikentsi Lapa
 
Обзор Redis storage / Symfony Camp UA 2011
Обзор Redis storage / Symfony Camp UA 2011Обзор Redis storage / Symfony Camp UA 2011
Обзор Redis storage / Symfony Camp UA 2011
Igor Brovchenko
 
XML Native Database на примере SednaXML
XML Native Database на примере SednaXMLXML Native Database на примере SednaXML
XML Native Database на примере SednaXMLSlach
 
Instalarea DSpace
Instalarea DSpaceInstalarea DSpace
Instalarea DSpace
Natalia Cheradi
 
Sef Kolotygin.V4
Sef Kolotygin.V4Sef Kolotygin.V4
Sef Kolotygin.V4sef2009
 
Использование NTFS Reparse points на примере Windows HSM
Использование NTFS Reparse points на примере Windows HSMИспользование NTFS Reparse points на примере Windows HSM
Использование NTFS Reparse points на примере Windows HSM
SQALab
 

Similar to Лекция 3. Распределённая файловая система HDFS (20)

03 - Hadoop. HDFS Shell-команды
03 - Hadoop. HDFS Shell-команды03 - Hadoop. HDFS Shell-команды
03 - Hadoop. HDFS Shell-команды
 
Обзор архитектуры [файловой] системы Ceph
Обзор архитектуры [файловой] системы CephОбзор архитектуры [файловой] системы Ceph
Обзор архитектуры [файловой] системы Ceph
 
Александр Крашенинников "Hadoop High Availability: опыт Badoo"
Александр Крашенинников "Hadoop High Availability: опыт Badoo"Александр Крашенинников "Hadoop High Availability: опыт Badoo"
Александр Крашенинников "Hadoop High Availability: опыт Badoo"
 
Alex Krasheninnikov – Hadoop High Availability
Alex Krasheninnikov – Hadoop High AvailabilityAlex Krasheninnikov – Hadoop High Availability
Alex Krasheninnikov – Hadoop High Availability
 
Administrarea DSpace
Administrarea DSpaceAdministrarea DSpace
Administrarea DSpace
 
12 - Hadoop. HBase и Cassandra
12 - Hadoop. HBase и Cassandra12 - Hadoop. HBase и Cassandra
12 - Hadoop. HBase и Cassandra
 
Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15Мастер-класс по BigData Tools для HappyDev'15
Мастер-класс по BigData Tools для HappyDev'15
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
 
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
 
Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...
Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...
Конференция Highload++ 2014, "Инструменты высоконагруженных проектов: кеширов...
 
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo). С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
С чего начать внедрение Hadoop в компании. Доклад Алексея Еремихина (Badoo).
 
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)
С чего начать внедрение Hadoop в компании / Алексей Еремихин (Badoo)
 
установка и настройка файлового сервера и сервера печати
установка и настройка файлового сервера и сервера печатиустановка и настройка файлового сервера и сервера печати
установка и настройка файлового сервера и сервера печати
 
Extreme Cloud Storage on FreeBSD, Андрей Пантюхин
Extreme Cloud Storage on FreeBSD, Андрей ПантюхинExtreme Cloud Storage on FreeBSD, Андрей Пантюхин
Extreme Cloud Storage on FreeBSD, Андрей Пантюхин
 
Linux files, file systems, block devices.
Linux files, file systems, block devices.Linux files, file systems, block devices.
Linux files, file systems, block devices.
 
Обзор Redis storage / Symfony Camp UA 2011
Обзор Redis storage / Symfony Camp UA 2011Обзор Redis storage / Symfony Camp UA 2011
Обзор Redis storage / Symfony Camp UA 2011
 
XML Native Database на примере SednaXML
XML Native Database на примере SednaXMLXML Native Database на примере SednaXML
XML Native Database на примере SednaXML
 
Instalarea DSpace
Instalarea DSpaceInstalarea DSpace
Instalarea DSpace
 
Sef Kolotygin.V4
Sef Kolotygin.V4Sef Kolotygin.V4
Sef Kolotygin.V4
 
Использование NTFS Reparse points на примере Windows HSM
Использование NTFS Reparse points на примере Windows HSMИспользование NTFS Reparse points на примере Windows HSM
Использование NTFS Reparse points на примере Windows HSM
 

More from Technopark

СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
Technopark
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
Technopark
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"
Technopark
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
Technopark
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
Technopark
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"
Technopark
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
Technopark
 
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
Technopark
 
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
Technopark
 
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
Technopark
 
СУБД 2013 Лекция №1 "Введение и начало проектирования"
СУБД 2013 Лекция №1 "Введение и начало проектирования"СУБД 2013 Лекция №1 "Введение и начало проектирования"
СУБД 2013 Лекция №1 "Введение и начало проектирования"
Technopark
 
Java осень 2014 занятие 8
Java осень 2014 занятие 8Java осень 2014 занятие 8
Java осень 2014 занятие 8
Technopark
 
Java осень 2014 занятие 7
Java осень 2014 занятие 7Java осень 2014 занятие 7
Java осень 2014 занятие 7
Technopark
 
Java осень 2014 занятие 6
Java осень 2014 занятие 6Java осень 2014 занятие 6
Java осень 2014 занятие 6
Technopark
 
Java осень 2014 занятие 5
Java осень 2014 занятие 5Java осень 2014 занятие 5
Java осень 2014 занятие 5
Technopark
 
Java осень 2014 занятие 3
Java осень 2014 занятие 3Java осень 2014 занятие 3
Java осень 2014 занятие 3
Technopark
 
Java осень 2014 занятие 1
Java осень 2014 занятие 1Java осень 2014 занятие 1
Java осень 2014 занятие 1
Technopark
 
Java осень 2014 занятие 2
Java осень 2014 занятие 2Java осень 2014 занятие 2
Java осень 2014 занятие 2
Technopark
 

More from Technopark (18)

СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"СУБД 2013 Лекция №9 "Безопасность баз данных"
СУБД 2013 Лекция №9 "Безопасность баз данных"
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
 
СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"СУБД 2013 Лекция №5 "Определение узких мест"
СУБД 2013 Лекция №5 "Определение узких мест"
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
 
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
 
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
СУБД 2013 Лекция №3 "Выборка данных (продолжение). Транзакции"
 
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
СУБД 2013 Лекция №2 "Модификация данных. Выборка данных (начало)"
 
СУБД 2013 Лекция №1 "Введение и начало проектирования"
СУБД 2013 Лекция №1 "Введение и начало проектирования"СУБД 2013 Лекция №1 "Введение и начало проектирования"
СУБД 2013 Лекция №1 "Введение и начало проектирования"
 
Java осень 2014 занятие 8
Java осень 2014 занятие 8Java осень 2014 занятие 8
Java осень 2014 занятие 8
 
Java осень 2014 занятие 7
Java осень 2014 занятие 7Java осень 2014 занятие 7
Java осень 2014 занятие 7
 
Java осень 2014 занятие 6
Java осень 2014 занятие 6Java осень 2014 занятие 6
Java осень 2014 занятие 6
 
Java осень 2014 занятие 5
Java осень 2014 занятие 5Java осень 2014 занятие 5
Java осень 2014 занятие 5
 
Java осень 2014 занятие 3
Java осень 2014 занятие 3Java осень 2014 занятие 3
Java осень 2014 занятие 3
 
Java осень 2014 занятие 1
Java осень 2014 занятие 1Java осень 2014 занятие 1
Java осень 2014 занятие 1
 
Java осень 2014 занятие 2
Java осень 2014 занятие 2Java осень 2014 занятие 2
Java осень 2014 занятие 2
 

Лекция 3. Распределённая файловая система HDFS

  • 1. Методы распределенной обработки больших объемов данных в Hadoop Москва 2014 Лекция 3: Распределенная файловая система HDFS
  • 2. Архитектура HDFS ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 3. HDFS • Hadoop Distributed File System • Для пользователя как “один большой диск” • Работает поверх обычных файловых систем – Ext3, Ext4, XFS • Основывается на архитектуре Google's Filesystem GFS – research.google.com/archive/gfs-sosp2003.pdf • Fault Tolerant – Умеет справляться с выходом из строя дисков, машин и т.д. ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 4. Используется обычное “железо” • “Дешевое”серверное оборудование – Нет суперкомпьютерам! – Нет десктопам! – Да обычным (ненадежным) серверам! ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 5. HDFS хорошо подходит для… • Хранения больших файлов – Терабайты, петабайты… – Миллионы (но не миллиарды) файлов – Файлы размером от 100 Мб • Стриминг данных – Паттерн “write once / read-many times” – Оптимизация под последовательное чтение • Нет операциям произвольного чтения – Операция append появилась в Hadoop 0.21 • Обычные сервера – Менее надежные, чем суперкомпьютеры ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 6. HDFS не подходит для… • Low-latency reads – Высокая пропускная способность большого объема данных (high-throughput) вместо небольшого времени доступа к небольшим порциям данных (low latency) – HBase помогает решать эту задачу • Большое количество небольших файлов – Лучше миллион больших файлов, чем миллиард маленьких • Напр. каждый файл размером от 100Мб • Многопоточная запись – Один процесс записи на файл – Данные дописываются в конец файла • Нет поддержки записи по смещению ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 7. Демоны HDFS • Для управления файловой системой есть три типа демонов – Namenode • Отвечает за файловое пространство (namespace), мета-ифномрацию и расположение блоков файлов • Запускается на 1й (выделенной) машине – Datanode • Хранит и отдает блоки данных • Отправляет ответы о состоянии на Namenode • Запускается обычно на всех машинах кластера – Secondary Namenode • Периодически обновляет fsimage • Требует то же железо, что и Namenode • (!) Не используется для high-availability, т.е. это не backup для Namenode ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 8. Демоны HDFS ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS Secondary Namenode Namenode Datanode 1 Datanode 2 Datanode 3…
  • 9. Файлы и блоки • Файлы в HDFS состоят из блоков – Блок – единица хранения данных • Управляется через Namenode • Хранится на Datanode • Реплицируются по машинам в процессе записи – Один и тот же блок хранится на нескольких Datanode – Фактор репликации по умолчанию равен 3 – Это нужно для fault-tolerance и упрощения доступа ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 10. Rack #NRack #1 Файлы и блоки ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS Namenode Datanode B1 DatanodeDatanode B1 DatanodeDatanode B1 large_file.txt = block 1 + block 2 Один и тот же блок B2 B2B2
  • 11. Блоки в HDFS • Стандартный размер блоков 64Мб или 128Мб • Основной мотив этого – снизить стоимость seek time по сравнению со скоростью передачи данных (transfer rate) – 'Time to transfer' > 'Time to seek' • Например, пусть будет – seek time = 10ms – transfer rate = 100 MB/s • Для достижения seek time равного 1% от transfer rate размер блока должен быть 100Мб ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 12. Репликация блоков • Namenode определяет, куда копировать реплики блоков • Размещение блоков зависит от того, в какой стойке стоит сервер (rack aware) – Баланс между надежностью и производительностью • Попытка снизить нагрузку на сеть (bandwidth) • Попытка улучшить надежность путем размещения реплик в разных стойках – Фактор репликации по умолчанию равен 3 • 1-я реплика на локальную машину • 2-я реплика на другую машину из той же стойки • 3-я реплика на машину из другой стойки ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 13. Клиенты, Namenode и Datanodes • Namenode не выполняет непосредственно операций чтения/записи данных – Это одна из причин масштабируемости Hadoop • Клиент обращается к Namenode для – обновления неймспейса HDFS – для получения информации о размещении блоков для чтения/записи • Клиент взаимодействует напрямую с Datanode для чтения/записи данных ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 14. HDFS: чтение файла ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS NamenodeClient DatanodeDatanodeDatanode 1 2 3 1. Получить расположение блоков 2. Прочитать 1й блок файла 3. Прочитать 2й блок файла
  • 15. HDFS: запись файла ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS NamenodeClient DatanodeDatanodeDatanode 1 2 1. Создать новый файл в namespace на NN и определить топологию блоков 2. Отправить данные на 1-ю DN 3. Отправить данные на 2-ю DN 4. Отправить данные на 3-ю DN 5. Подтверждение Success/Failure 6. Подтверждение Success/Failure 7. Подтверждение Success/Failure 7 3 6 4 5
  • 16. Namenode: использование памяти • Для быстрого доступа вся мета-информация о блоках хранится в ОЗУ Namenode – Чем больше кластер, тем больше ОЗУ требуется • Лучше миллионы больших файлов (сотни мегабайт), чем миллиарды маленьких • Работает на кластерах из сотен машин • Hadoop 2+ – Namenode Federation • Каждая Namenode управляет частью блоков • Горизонтальное масштабирование Namenode – Поддержка кластеров из тысячи машин – Детали тут: http://hadoop.apache.org/docs/r2.0.2-alpha/hadoop- yarn/hadoop-yarn-site/Federation.html ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 17. Namenode: использование памяти • Изменение размера блока влияет на максимальный размер FS – Увеличение размера блока с 64Мб до 128Мб уменьшает число блоков и существенно увеличивает размер места, которое NN может обслуживать – Пример: • Пусть у нас есть 200Тб = 209,715,200 Мб • При размере блока 64Мб это соответствует 3,276,800 блоков – 209,715,200Mб / 64Mб = 3,276,800 блоков • При размере блока 128Мб это соответствует 1,638,400 блоков – 209,715,200Mб / 128Mб = 1,638,400 блоков ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 18. Fault-tolerance в Namenode • Процесс демона NN должен быть запущен все время – Если демон падает, то HDFS не работает (и обычно весь кластер тоже) • Namenode – это единая точка отказа (single point of failure) – Должна работать на отдельной надежной машине – Обычно, это не бывает проблемой • Hadoop 2+ – High Availability Namenode • Процесс Active Standby всегда запущен и берет на себя управления в случае падения NN • Все еще в процессе тестирования – Более подробно тут: • http://hadoop.apache.org/docs/r2.0.2-alpha/hadoop-yarn/hadoop-yarn- site/HDFSHighAvailability.html ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 19. Доступ к HDFS • Способы доступа – Direct Access • Взаимодействует с HDFS с помощью нативного клиента • Java, C++ – Через Proxy Server • Досутп к HDFS через Proxy Server – middle man • Серверы REST, Thrift и Avro ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 20. Direct Access • API для Java и C++ • Клиент запрашивает метаданные (такие, как расположение блоков) от NN • Клиент напрямую запрашивает данные от DN • Java API – Наиболее часто используется • Используется для MapReduce ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS Namenode Datanode Datanode Java Client Java Client Java Client . . . . . .
  • 21. Доступ через Proxy Server • Клиент работает через внешний Proxy Server – Т.о. должна быть независимость от языка • Существует несколько серверов в поставке с Hadoop – Thrift – язык определения интерфейса – WebHDFS REST – ответы в формате JSON, XML или Protocol Buffers – Avro – механизм сериализации ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS Namenode Datanode Datanode Client Client Client Proxy Server . . . . . .
  • 22. HDFS Shell ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 23. Команды Shell • Взаимодействие с FS через стандартный unix-shell • Использование: $hdfs dfs -<command> -<option> <URI> – Example $hdfs dfs -ls / • URI usage: – HDFS: $hdfs dfs -ls hdfs://localhost/to/path/dir – Local: $hdfs dfs -ls file:///to/path/file3 – Схема и имя хоста NN опиционально, по-умолчанию используется параметр из конфигурации • В core-site.xml - fs.default.name property ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 24. Hadoop URI scheme://autority/path hdfs://localhost:8020/user/home scheme authority HDFS path ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 25. Команды в shell • Большинство команд ведет себя схожим образом, что и команды в Unix – cat, rm, ls, du … • Поддержка специфичных для HDFS операций – Напр., смена фактора репликации • Вывод списка команд – $ hdfs dfs –help • Показать детальную информацию по команде – $ hdfs dfs -help <command_name> ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 26. Основные команды в shell • cat – вывод источника в stdout – Весь файл: $hdfs dfs -cat /dir/file.txt – Полезно вывод перенаправить через pipe в less, head, tail и т.д. – Получить первые 100 строк из файла • $hdfs dfs -cat /dir/file.txt | head -n 100 • ls – отобразить файловую статистику, для директории отобразить вложенные директории и файлы – $hdfs dfs -ls /dir/ • mkdir – создать директорию – $hdfs dfs -mkdir /dir ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 27. Копирование данных в shell • cp – скопировать файлы из одного места в другое – $hdfs dfs -cp /dir/file1 /otherDir/file2 • mv – перемещение файла из одного места в другое – $hdfs dfs -mv /dir/file1 /dir2 • put – копирование файла из локальной FS в HDFS – $hdfs dfs -put localfile /dir/file1 – copyFromLocal • get – копирование файла из HDFS в локальную FS – $hdfs dfs -get /dir/file1 localfile – copyToLocal ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 28. Удаление и статистика в shell • rm – удалить файл (в корзину) – $hdfs dfs -rm /dir/file • rm -r – удалить рекурсивно директорию – $hdfs dfs -rm -r /dir • du – отобразить размер файла или директории в байтах – $hdfs dfs -du /dir/ • du -h – отобразить размер файла или директории в удобно-читаемом формате – $hdfs dfs -du –h /dir/ 65M /dir ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 29. Остальные команды в shell • Другие команды – chmod, count, test, tail и т.д. • Чтобы узнать больше – $hdfs dfs -help – $hdfs dfs -help <command> ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 30. Команда fsck • Проверка неконсистентности файловой системы • Показывает проблемы – Отсутствующие блоки – Недореплицированные блоки • Не устраняет проблем, только информация – Namenode попытается автоматически исправить проблемы • $ hdfs fsck <path> – Напр., $ hdfs fsck / ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 31. Права в HDFS • Ограничения на уровне файла/директории – Сходство с моделью прав в POSIX – Read (r), Write (w) и Execute (x) – Разделяется на пользователя, группу и всех остальных • Права пользователя определяются исходя из прав той ОС, где он запускает клиентское приложение • Авторизация через Kerberos – Hadoop 0.20.20+ – http://hadoop.apache.org/common/docs/r0.23.0/hadoop-yarn/hadoop- yarnsite/ClusterSetup.html ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS [cloudera@localhost ~]$ hadoop fs -ls /user/cloudera/wordcount/output Found 3 items -rw-r--r-- 3 cloudera cloudera 0 2014-03-15 11:56 /user/cloudera/wordcount/output/_SUCCESS drwxr-xr-x - cloudera cloudera 0 2014-03-15 11:56 /user/cloudera/wordcount/output/_logs -rw-r--r-- 3 cloudera cloudera 31 2014-03-15 11:56 /user/cloudera/wordcount/output/part-00000
  • 32. Команда DFSAdmin • Команды для администрирования HDFS – $hdfs dfsadmin <command> – Напр.: $hdfs dfsadmin –report • report – отображает статистику по HDFS – Часть из этого также доступна в веб-интерфейсе • safemode – переключения между режимом safemode для проведения административных работ – Upgrade, backup и т.д. ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 33. Балансер HDFS • Блоки в HDFS могут быть неравномерно распределены по всем Datanode’ам кластера – К примеру, при добавлении новых машин они будут какое-то время почти пустыми, т.к. новые данные будут записываться исходи из топологии • Балансер – это утилита, которая автоматически анализирует расположение блоков в HDFS и старается его сбалансировать – $ hdfs balancer ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 34. HDFS API ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 35. File System Java API • org.apache.hadoop.fs.FileSystem – Абстрактный класс, которые представляет абстрактную файловую систему – (!) Это именно класс, а не интерфейс • Реализуется в различных вариантах – Напр., локальная или распределенная ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 36. Реализации FileSystem • Hadoop предоставляет несколько конкретных реализаций – org.apache.hadoop.fs.LocalFileSystem • Подходит для нативных FS, использующих локальные диски – org.apache.hadoop.hdfs.DistributedFileSystem • Hadoop Distributed File System (HDFS) – org.apache.hadoop.hdfs.HftpFileSystem • Доступ к HDFS в read-only режиме через HTTP – org.apache.hadoop.fs.ftp.FTPFileSystem • Файловая система поверх FTP-сервера • Различные реализации для разных задач • Для работы с HDFS обычно используется – org.apache.hadoop.hdfs.DistributedFileSystem ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 37. Пример SimpleLocalLs.java ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS public class SimpleLocalLs { public static void main(String[] args) throws Exception{ Path path = new Path("/"); if ( args.length == 1 ){ path = new Path(args[0]); } Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(conf); FileStatus [] files = fs.listStatus(path); for (FileStatus file : files ){ System.out.println(file.getPath().getName()); } } }
  • 38. FileSystem API: Path • Объект Path в Hadoop представляет файл или директорию – java.io.File сильно завязан на локальную FS • Path – это на самом деле URI в FS – HDFS: hdfs://localhost/user/file1 – Local: file:///user/file1 • Пример: – new Path("/test/file1.txt"); – new Path("hdfs://localhost:9000/test/file1.txt"); ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 39. Объект Configuration • Объект Configuration хранит конфигурацию сервера и клиента – Довольно много где используется в Hadoop • HDFS, MapReduce, Hbase,.. • Использует простую парадигму key-value – Является враппером надо java.util.Properties, – Который в свою очередь враппер над java.util.Hashtable • Получения значения параметра – String name = conf.get("fs.default.name"); • returns null если свойства не существует • Получения значения параметра и вернуть значение по-умолчанию, если не существует – String name = conf.get("fs.default.name“, “hdfs://localhost:9000”); • Также есть типизированные варианты – getBoolean, getInt, getFloat и т.п. • float size = conf.getFloat("file.size"); ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 40. Объект Configuration • Обычно инициализируется значениями через конфигурационный файлы из CLASSPATH (напр., conf/coresite.xml и conf/hdfs-site.xml) – Configuration conf = new Configuration(); conf.addResource( new Path(HADOOP_HOME + "/conf/coresite.xml")); • conf.addResource() может принимать как String, так и Path – conf.addResource("hdfs-site.xml") – conf.addResource(new Path("/my/location/site.xml") • По-умолчанию загружает – core-default.xml • Расположен в hadoop-common-X.X.X.jar/core-default.xml – core-site.xml ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 41. Чтение данных из файла • Создать объект FileSystem • Открыть InputStream, указывающий на Path • Скопировать данные по байтам используя IOUtils • Закрыть InputStream ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 42. Пример ReadFile.java ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS public class ReadFile { public static void main(String[] args) throws IOException { Path file = new Path("/path/to/file.txt"); FileSystem fs = FileSystem.get(new Configuration()); // Open FileSystem InputStream input = null; try { input = fs.open(file); // Open InputStream IOUtils.copyBytes(input, System.out, 4096); // Copy from Input to Output Stream } finally { IOUtils.closeStream(input); // Close stream } } }
  • 43. Запись данных в файл • Создать объект FileSystem • Открыть OutputStream – Указывает на Path из FileSystem – Используем FSDataOutputStream – Автоматически создаются все директори в пути, если не существуют • Копируем данные по байтам используя IOUtils ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 44. Пример WriteToFile.java ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS public class WriteToFile { public static void main(String[] args) throws IOException { String text = "Hello world in HDFS!n"; InputStream in = new BufferedInputStream( new ByteArrayInputStream(text.getBytes())); Path file = new Path("/path/to/file.txt"); Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(conf); // Create FileSystem FSDataOutputStream out = fs.create(file); // Open OutputStream IOUtils.copyBytes(in, out, conf); // Copy Data } }
  • 45. FileSystem: запись данных • fs.append(path) – дописать к существующему файлу – Поддержка для HDFS • Нельзя записать в середину файла • FileSystem.create(Path) создает все промежуточные директории для заданного каталога (по умолчанию) – Если это не нужно, то надо использовать • public FSDataOutputStream create(Path f, boolean overwrite) • overwrite = false ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 46. FileSystem: подстановки (globbing) • FileSystem имеет поддержку матчинга имени файла по заданному паттерну используя метод globStatus() – FileStatus [] files = fs.globStatus(glob); • Используется для выбора списка файлов по шаблону • Примеры шаблонов – ? – любой один символ – * - любые 0 и больше символов – [abc] – любой символ из набора в скобках • [a-z] – [^a] – любой символ, кроме указанного – {ab,cd} – любая строка из указанных в скобках ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS
  • 47. ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS Книги Hadoop: The Definitive Guide Tom White (Author) O'Reilly Media; 3rd Edition Chapter 3: The Hadoop Distributed Filesystem Chapter 4: Hadoop I/O
  • 48. Вопросы? ЛЕКЦИЯ 3: РАСПРЕДЕЛЕННАЯ ФАЙЛОВАЯ СИСТЕМА HDFS