SlideShare a Scribd company logo
HDFS API
File System Java API
• org.apache.hadoop.fs.FileSystem
– Абстрактный класс, которые представляет
абстрактную файловую систему
– (!) Это именно класс, а не интерфейс
• Реализуется в различных вариантах
Реализации 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-сервера
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 представляет файл или директорию
– 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/");
Объект Configuration
• Объект Configuration хранит конфигурацию сервера
и клиента
• Использует простую парадигму key-value
• Получения значения:
String name = conf.get("fs.default.name");
String name = conf.get("fs.default.name“, “hdfs://localhost:9000”);
float size = conf.getFloat("file.size");
Чтение данных из файла
• Создать объект FileSystem
• Открыть InputStream, указывающий на Path
• Скопировать данные по байтам используя
IOUtils
• Закрыть InputStream
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());
InputStream input = null;
try {
input = fs.open(file);
IOUtils.copyBytes(input, System.out, 4096);
} finally {
IOUtils.closeStream(input);
}
}
}
Запись данных в файл
• Создать объект FileSystem
• Открыть OutputStream
– Указывает на Path из FileSystem
– Используем FSDataOutputStream
– Автоматически создаются все директори в пути,
если не существуют
• Копируем данные по байтам используя IOUtils
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);
FSDataOutputStream out = fs.create(file);
IOUtils.copyBytes(in, out, conf); // Copy Data
}
}
FileSystem: запись данных
• fs.append(path) – дописать к существующему файлу
– Поддержка для HDFS
• Нельзя записать в середину файла
• FileSystem.create(Path) создает все промежуточные
директории для заданного каталога (по умолчанию)
– Если это не нужно, то надо использовать
• public FSDataOutputStream create(Path f, boolean overwrite)
• overwrite = false
FileSystem: подстановки (globbing)
• FileSystem имеет поддержку матчинга имени файла по
заданному паттерну используя метод globStatus()
– FileStatus [] files = fs.globStatus(glob);
• Примеры шаблонов
– ? – любой один символ
– * - любые 0 и больше символов
– [abc] – любой символ из набора в скобках
– [^a] – любой символ, кроме указанного
– {ab,cd} – любая строка из указанных в скобках

More Related Content

PDF
Administrarea DSpace
PDF
Bash scripting
PPT
лабраб 4
PPTX
Lecture14
PDF
Linux files, file systems, block devices.
PDF
Setarea DSpace
PPT
файлы и файловая система
Administrarea DSpace
Bash scripting
лабраб 4
Lecture14
Linux files, file systems, block devices.
Setarea DSpace
файлы и файловая система

What's hot (20)

PPTX
file handling in c++
PPTX
Файловые_архивы
PPTX
О безопасном использовании PHP wrappers
PPTX
Файлообменники
PDF
Интуит. Разработка приложений для iOS. Лекция 8. Работа с данными
PPTX
Файлообменники
PPTX
Vipolnenie komand na servere
PPT
Web весна 2013 лекция 3
PPT
модуль 16 взаимодействие с файловой системой
PDF
Web осень 2013 лекция 1
PPT
PHP Tricks
PPTX
Первое знакомство с MODx revolution
PDF
"Деплой кода процедур" Мурат Кабилов (Avito)
PDF
Создание электронной библиотеки научных трудов на платформе Dspace
PPT
Web осень 2012 лекция 3
PDF
Web осень 2013 лекция 3
PPTX
информатика. ос
PDF
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
PDF
03 - Hadoop. HDFS Shell-команды
PDF
Стажировка 2016-07-12 02 Денис Нелюбин. Web, HTTP, TCP/IP
file handling in c++
Файловые_архивы
О безопасном использовании PHP wrappers
Файлообменники
Интуит. Разработка приложений для iOS. Лекция 8. Работа с данными
Файлообменники
Vipolnenie komand na servere
Web весна 2013 лекция 3
модуль 16 взаимодействие с файловой системой
Web осень 2013 лекция 1
PHP Tricks
Первое знакомство с MODx revolution
"Деплой кода процедур" Мурат Кабилов (Avito)
Создание электронной библиотеки научных трудов на платформе Dspace
Web осень 2012 лекция 3
Web осень 2013 лекция 3
информатика. ос
Хранение данных в iPhone. (FMDB, SQL-Persistence, CoreData)
03 - Hadoop. HDFS Shell-команды
Стажировка 2016-07-12 02 Денис Нелюбин. Web, HTTP, TCP/IP
Ad

More from Roman Brovko (20)

PDF
Individual task Networking
PPTX
Networking essentials lect3
PPTX
Gl embedded starterkit_ethernet
PPTX
Networking essentials lect2
PPTX
Networking essentials lect1
PPTX
Bare metal training_07_spi_flash
PPTX
Bare metal training_06_I2C
PPTX
Glesk worshop
PPTX
Bare metal training_05_uart
PPTX
Bare metal training_04_adc_temp_sensor
PPTX
Bare metal training_03_timers_pwm
PPTX
Bare metal training_02_le_ds_and_buttons
PPTX
Bare metal training_01_hello_world
PPTX
Bare metal training_00_prerequisites
PPTX
C language lect_23_advanced
PPTX
C language lect_22_advanced
PPTX
C language lect_21_advanced
PPTX
подготовка рабочего окружения
PPTX
C language lect_20_advanced
PPTX
C language lect_19_basics
Individual task Networking
Networking essentials lect3
Gl embedded starterkit_ethernet
Networking essentials lect2
Networking essentials lect1
Bare metal training_07_spi_flash
Bare metal training_06_I2C
Glesk worshop
Bare metal training_05_uart
Bare metal training_04_adc_temp_sensor
Bare metal training_03_timers_pwm
Bare metal training_02_le_ds_and_buttons
Bare metal training_01_hello_world
Bare metal training_00_prerequisites
C language lect_23_advanced
C language lect_22_advanced
C language lect_21_advanced
подготовка рабочего окружения
C language lect_20_advanced
C language lect_19_basics
Ad

04 - Hadoop. HDFS Java API

  • 2. File System Java API • org.apache.hadoop.fs.FileSystem – Абстрактный класс, которые представляет абстрактную файловую систему – (!) Это именно класс, а не интерфейс • Реализуется в различных вариантах
  • 3. Реализации 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-сервера
  • 4. 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()); } } }
  • 5. FileSystem API: Path • Объект Path представляет файл или директорию – 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/");
  • 6. Объект Configuration • Объект Configuration хранит конфигурацию сервера и клиента • Использует простую парадигму key-value • Получения значения: String name = conf.get("fs.default.name"); String name = conf.get("fs.default.name“, “hdfs://localhost:9000”); float size = conf.getFloat("file.size");
  • 7. Чтение данных из файла • Создать объект FileSystem • Открыть InputStream, указывающий на Path • Скопировать данные по байтам используя IOUtils • Закрыть InputStream
  • 8. 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()); InputStream input = null; try { input = fs.open(file); IOUtils.copyBytes(input, System.out, 4096); } finally { IOUtils.closeStream(input); } } }
  • 9. Запись данных в файл • Создать объект FileSystem • Открыть OutputStream – Указывает на Path из FileSystem – Используем FSDataOutputStream – Автоматически создаются все директори в пути, если не существуют • Копируем данные по байтам используя IOUtils
  • 10. 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); FSDataOutputStream out = fs.create(file); IOUtils.copyBytes(in, out, conf); // Copy Data } }
  • 11. FileSystem: запись данных • fs.append(path) – дописать к существующему файлу – Поддержка для HDFS • Нельзя записать в середину файла • FileSystem.create(Path) создает все промежуточные директории для заданного каталога (по умолчанию) – Если это не нужно, то надо использовать • public FSDataOutputStream create(Path f, boolean overwrite) • overwrite = false
  • 12. FileSystem: подстановки (globbing) • FileSystem имеет поддержку матчинга имени файла по заданному паттерну используя метод globStatus() – FileStatus [] files = fs.globStatus(glob); • Примеры шаблонов – ? – любой один символ – * - любые 0 и больше символов – [abc] – любой символ из набора в скобках – [^a] – любой символ, кроме указанного – {ab,cd} – любая строка из указанных в скобках