8-Hadoop_HDFS (1158858), страница 2
Текст из файла (страница 2)
по умолчанию)Отказ сервера снижает производительность,но не приводит к потере данныхРепликацияRack AwarenessДополнительный механизм защиты от сбоягруппы серверовRack – серверный шкаф: Отключениепитания всего шкафа Потеря сетевого соединения со шкафомHDFS умеет распределять реплики междуразными шкафамиОтказ всего шкафа не приводит к потереданныхRack AwarenessДоступ к HDFSБлоки HDFS распределены по разнымсерверам:нельзя подмонтировать Не работают стандартные Linux команды:ls, cp, mv и .т. HDFSДля работы с HDFS используютсяспециальные команды: $bin/hadoopdfs -cmdСтруктура HDFSКорневой каталог HDFS - /Домашние каталоги пользователей /user/$USERВременный каталог - /tmpНет понятия текущий каталог НетПути:команд cd, pwd Полные – начиная с / Относительные – из домашнегопользователякаталогаПросмотр файлов в каталогеДомашний каталог:hadoop@hadoop:~/hadoop$ bin/hadoop dfs -lsFound 3 items-rw-r--r-1 hadoop supergroup0 2011-06-22 13:58 /user/hadoop/file1-rw-r--r-1 hadoop supergroup0 2011-06-22 13:58 /user/hadoop/file2-rw-r--r-1 hadoop supergroup0 2011-06-22 13:58 /user/hadoop/file3Корневой каталог:hadoop@hadoop:~/hadoop$ bin/hadoop dfs -ls /Found 2 itemsdrwxr-xr-x- hadoop supergroup0 2011-05-17 18:32 /tmpdrwxr-xr-x- hadoop supergroup0 2011-05-18 14:35 /userПросмотр файлаСписок файлов:hadoop@hadoop:~/hadoop$ bin/hadoop dfs -lsFound 3 items-rw-r--r-1 hadoop supergroup0 2011-06-22 13:58 /user/hadoop/file1-rw-r--r-1 hadoop supergroup0 2011-06-22 13:58 /user/hadoop/file2-rw-r--r-1 hadoop supergroup0 2011-06-22 13:58 /user/hadoop/file3Просмотр файла:hadoop@hadoop:~/hadoop$ bin/hadoop dfs -cat file1Hello, world!Hello, Hadoop!Просмотр файла, полный путь:hadoop@hadoop:~/hadoop$ bin/hadoop dfs -cat /user/hadoop/file1Hello, world!Hello, Hadoop!Запись файлов в HDFSКоманда: $bin/hadoopdfs –put localSrc hdfsDestКопирует из локальной файловой системы вHDFSРаботает как с файлами, так и с каталогамиЕсли файл уже существует, выдает ошибкуСиноним -copyFromLocalЗапись файлов в HDFSЗапись файла:hadoop@hadoop:~/hadoop$ bin/hadoop dfs -put /tmp/file1 /user/hadoopЗапись каталога:hadoop@hadoop:~/hadoop$ bin/hadoop dfs -put /tmp/dir1 /user/hadoophadoop@hadoop:~/hadoop$ bin/hadoop dfs -ls dir1Found 3 items-rw-r--r-1 hadoop supergroup 0 2011-06-22 14:49 /user/hadoop/dir1/filea-rw-r--r-1 hadoop supergroup 0 2011-06-22 14:49 /user/hadoop/dir1/fileb-rw-r--r-1 hadoop supergroup 0 2011-06-22 14:49 /user/hadoop/dir1/filecФайл существует:hadoop@hadoop:~/hadoop$ bin/hadoop dfs -put /tmp/file1 file1put: Target file1 already existsПолучение файлов из HDFSКоманда: $bin/hadoop dfs –get hdfsSrc localDestКопирует из HDFS в локальнуюфайловую систему Работает как с файлами, так и скаталогами Синоним -copyToLocalКоманды для работы с HDFSКомандаНазначение-mv src destПеремещение файлов внутри HDFS-cp src destКопирование файлов внутри HDFS-rm pathУдаление файла или пустого каталога-rmr pathУдаление файла или каталога рекурсивно-mkdir pathСоздание каталога (работает как mkdir –p в Linux)-stat pathВыводит информацию по файлу или каталогу-tail [-f] pathВывод последнего килобайта файла (с -f выводитдобавляемые данные)-helpПеречень команд работы с HDFSWeb-интерфейс к HDFShttp://namenode-hostname:50070Права доступа в HDFSМодель прав доступа HDFS похожа наPOSIX: Файлимеет владельца (owner) и группу(group) Права задаются отдельно для владельца,группы и всех остальных Права доступа rwx Нет sticky bit, setuid or setgidСемантика прав доступаДля файлов:– чтение w – запись x – не используетсяrДля каталогов:– просмотр содержимого каталога w – создание файлов или каталогов x – доступ к файлам и подкаталогамrПользователи HDFSПользователи HDFS соответствуютпользователям Linux: Пользователь:`whoami` Список групп: `bash -c groups`Суперпользователь Недействуют ограничения прав доступа Пользователь, который запустил Hadoop Нет постоянного суперпользователяПросмотр прав доступаhadoop@hadoop:~/hadoop$ bin/hadoop dfs -lsFound 3 items-rw-r--r-1 hadoop supergroup0 2011-06-22 13:58 /user/hadoop/file1-rw-r--r-1 hadoop supergroup0 2011-06-22 13:58 /user/hadoop/file2-rw-r--r-1 hadoop supergroup0 2011-06-22 13:58 /user/hadoop/file3ПравадоступаВладелецГруппаУправление правами доступаКомандыКомандаНазначение-chmod [-R] mode pathИзменение прав доступа-chown [-R] owner[:group] pathИзменение владельца (игруппы)-chgroup [-R] grm pathИзменение группыОпция –R – рекурсивные измененияПрава доступа записываются как в LinuxИзменение прав доступаИсходные права доступа$ bin/hadoop dfs -ls /user/Andrey/file1-rw-r--r-1 Andrey supergroup0 2011-06-23 11:20 /user/Andrey/file1Цифровой режим$ bin/hadoop dfs -chmod 600 /user/Andrey/file1$ bin/hadoop dfs -ls /user/Andrey/file1-rw------1 Andrey supergroup 0 2011-06-23 11:20 /user/Andrey/file1Символьный режим$ bin/hadoop dfs -chmod g+rw /user/Andrey/file1$ bin/hadoop dfs -ls /user/Andrey/file1-rw-rw---1 Andrey supergroup 0 2011-06-23 11:20 /user/Andrey/file1Изменение владельца и группыИсходное состояние$ bin/hadoop dfs -ls /user/Andrey/file1-rw-rw---1 Andrey supergroupИзменение владельца$ bin/hadoop dfs -chown anton/user/Andrey/file1$ bin/hadoop dfs -ls /user/Andrey/file1-rw-rw---1 anton supergroup0 2011-06-23 11:20 /user/Andrey/file10 2011-06-23 11:20 /user/Andrey/file1Изменение группы$ bin/hadoop dfs -chgrp project1 /user/Andrey/file1$ bin/hadoop dfs -ls /user/Andrey/file1-rw-rw---1 anton project10 2011-06-23 11:20 /user/Andrey/file1Работа с HDFS из Java// Настройка путейConfiguration conf = new Configuration();FileSystem fs = FileSystem.get(conf);Path filenamePath = new Path("hello.txt");// Запись в файлFSDataOutputStream out = fs.create(filenamePath);out.writeUTF(«Hello, world");out.close();// Чтение файлаFSDataInputStream in = fs.open(filenamePath);String messageIn = in.readUTF();System.out.print(messageIn);in.close();Подключение к файловойсистемеorg.apache.hadoop.fs.FileSystem –интерфейс для работы с DFS и другимифайловыми системами org.apache.hadoop.conf.Configuration –конфигурация Hadoop и HDFS Подключение к файловой системе:Configuration conf = new Configuration();FileSystem fs = FileSystem.get(conf);Структура имени файлаФайл в HDFS: hdfs://namenode:port/path/file hdfs://localhost:9000/user/hadoop/file1– можно не указывать,тогда используется namenode из текущегоконфигурационного файла Hadoop hdfs://namenode:portФайл на локальном диске: file://path/fileЗапуск программыFileSystem может работать как с HDFS,так и с локальной файловой системой,в зависимости от способа запуска Локальный запуск: javaHDFSHelloWorldЗапуск через Hadoop (запись в HDFS): $bin/hadoopHDFSHelloWorldМетоды FileSystemМетодНазначениеcopyFromLocalFileКопирование из локальной файловой системыв HDFScopyToLocalFileКопирование из HDFS в локальную файловуюсистемуcreateСоздание файлаmkdirsСоздание каталогаdeleteУдаление файла или каталогаrenameПереименование файлаsetOwnerУстановка владельца и группы файлаsetPermissionsУстановка прав доступа к файлуgetFileBlockLocationsВозвращает список серверов, хранящих блокифайлаДополнительные материалыThe Google File SystemHDFS Architecture Guidehttp://hadoop.apache.org/common/docs/current/hdfs_design.htmlHDFS Permissions Guidehttp://labs.google.com/papers/gfs.htmlhttp://hadoop.apache.org/common/docs/current/hdfs_permissions_guide.htmlHDFS Users Guidehttp://hadoop.apache.org/common/docs/current/hdfs_user_guide.htmlВопросы?.