Что есть HDFS?
HDFS - это распределенная файловая система. В данной инструкции мы поставим ее в тестовом режиме! Это небезопасно, в боевом режиме Вы обязательно должны настроить HA или копирование на NFS для метаданных.
Пару слов об аппаратной конфигурации - для начала, мы развертываем HDFS на одном сервере с двумя жесткими дисками (иначе вообще вся затея с распределенной ФС становится бессмысленной). В моем примере диски смонтированы как /data/disk1 и /data/disk2.
Конфигурируем hostname и /etc/hosts
В самом-самом начале пути нужно сделать следующее - открыть редактором /etc/sysconfig/network и в поле HOSTNAME вписать корректный хостнейм адрес машины в виде:
Следом открыть файл hosts: /etc/hosts и там вписать/исправить следующее:
Итак, для работы Cloudera нам нужна Java версии 1.7 (я использовал update 45), так что идем на сайт Oracle и стягиваем там "jre-7-linux-x64.rpm".
Водружаем ее:
Проверяем, что все встало корректно:
Стягиваем репо:
Ставим все, что нужно для работы Hadoop HDFS (почти 200 мегабайт пакетов):
Далее открываем файл /etc/hadoop/conf.my_cluster/hdfs-site.xml и в блок configuration вносим:
И конфигурируем их права:
Теперь форматируем namenode:
Запускаем namenode:
Запускаем data node:
Создаем свою первую папку:
Смотрим листинг корневой директории:
Мониторинг HDFS
Его можно осуществлять посредством веб-скрипта: http://IP_адрес_вашей_namenode:50070/dfshealth.jsp
Настройка HDFS Fuse
Так как каждый раз пользоваться hadoop fs неудобно далеко не всегда, я рекомендую использовать Fuse модуль, чтобы смонтировать HDFS как обычную ФС (не забываем, HDFS - не Posix! Блокировки и правки файлов не поддерживаются).
В следующей публикации я постараюсь поставить второй сервер как datanode, чтобы на практике протестировать функцию отказоустойчивости HDFS
Установка datanode на отдельном сервере
Устанавливаем Java по аналогии с предыдущим сервером, далее также конфигурируем hostname и /etc/hosts. Данный сервер назовем data1-hadoop.fastvps.ru.
Далее ставим hadoop data node:
<property><name>fs.trash.interval</name> <value>10080</value> </property>
Создаем необходимую папку:
Выставляем права:
Запускаем data node:
Теперь можно открыть статистику HDFS и смотреть, как блоки нашего 10 гигабайтного файла реплицируются на вновь добавленный сервер.
Как репликация закончится, можно смело отключать второй сервер (отключив сервер с name node Вы выведете кластер из строя, да) и продолжать работать с файловой системой как ни в чем ни бывало!
Ура!
Источник: http://www.cloudera.com/content/cloudera-content/cloudera-docs/CDH4/4.2.0/CDH4-Installation-Guide/cdh4ig_topic_11_2.html
HDFS - это распределенная файловая система. В данной инструкции мы поставим ее в тестовом режиме! Это небезопасно, в боевом режиме Вы обязательно должны настроить HA или копирование на NFS для метаданных.
Пару слов об аппаратной конфигурации - для начала, мы развертываем HDFS на одном сервере с двумя жесткими дисками (иначе вообще вся затея с распределенной ФС становится бессмысленной). В моем примере диски смонтированы как /data/disk1 и /data/disk2.
Конфигурируем hostname и /etc/hosts
В самом-самом начале пути нужно сделать следующее - открыть редактором /etc/sysconfig/network и в поле HOSTNAME вписать корректный хостнейм адрес машины в виде:
HOSTNAME=hadoop.fastvps.ru
Следом открыть файл hosts: /etc/hosts и там вписать/исправить следующее:
88.198.XX.XX hadoop.fastvps.ru hadoop
Где 89.198.XX.XX - ВНЕШНИЙ IP адрес сервера, НЕ localhost/127.0.0.1.
После этого в обязательном порядке перезагружаемся, чтобы система подхватила обновленный hostname.
Теперь проверяем, чтобы хостнейм резолвился во внешний IP командой ping (запись в DNS в данный момент не нужна):
ping -c 1 hadoop.fastvps.ru
PING hadoop.fastvps.ru (89.198.XX.XX) 56(84) bytes of data.
64 bytes from hadoop.fastvps.ru (89.198.XX.XX): icmp_seq=1 ttl=64 time=0.025 ms
--- hadoop.fastvps.ru ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.025/0.025/0.025/0.000 ms
Все, это позволит избежать кучи проблем в будущем. Корректный хостнейм ОЧЕНЬ важен для Hadoop, кривые данные в нем могут привести к очень и очень плачевным последствиям.
Устанавливаем Java
Устанавливаем Java
Итак, для работы Cloudera нам нужна Java версии 1.7 (я использовал update 45), так что идем на сайт Oracle и стягиваем там "jre-7-linux-x64.rpm".
Водружаем ее:
yum install -y jre-7-linux-x64.rpm
Проверяем, что все встало корректно:
java -versionУстанавливаем Cloudera Hadoop
java version "1.7.0"
Java(TM) SE Runtime Environment (build 1.7.0-b147)
Java HotSpot(TM) 64-Bit Server VM (build 21.0-b17, mixed mode)
Стягиваем репо:
wget http://archive.cloudera.com/cdh4/redhat/6/x86_64/cdh/cloudera-cdh4.repo -O/etc/yum.repos.d/cloudera-cdh4.repo
Ставим все, что нужно для работы Hadoop HDFS (почти 200 мегабайт пакетов):
yum install hadoop-hdfs-namenode hadoop-hdfs-datanode hadoop-client
Копируем стандартный конфиг для правки:
cp -r /etc/hadoop/conf.dist /etc/hadoop/conf.my_cluster
alternatives --verbose --install /etc/hadoop/conf hadoop-conf /etc/hadoop/conf.my_cluster 50
alternatives --set hadoop-conf /etc/hadoop/conf.my_cluster
Теперь нужно настроить кластер, в файле /etc/hadoop/conf.my_cluster/core-site.xml
В блок confguration вносим следующее (это имя нашего кластера):
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop.fastvps.ru/</value>
</property>
<property><name>fs.trash.interval</name> <value>10080</value> </property>Второй параметр отвечает за активацию корзины (и ее автоочистки через неделю после удаления файла). Обращаю внимание, что корзина работает только с hdfs shell, через API файлы сносятся сразу же.
Далее открываем файл /etc/hadoop/conf.my_cluster/hdfs-site.xml и в блок configuration вносим:
<property> <name>dfs.permissions.superusergroup</name>
<value>hadoop</value></property>
<property> <name>dfs.namenode.name.dir</name>
<value>/data/disk1/dfs/namenode
</value> </property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/disk1/dfs/datanode,/data/disk2/dfs/datanode</value>
</property>
<property>
<name>dfs.datanode.failed.volumes.tolerated</name>
<value>1</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
Тут мы задаем пути до папок хранения данных namednode (тут будут метаданные) и datanode (тут будут сами данные). С предпоследним параметром интереснее - это предельное число data нод, которые могут отказать на данном сервере. А вот последний параметр задает стандартное число реплик для файлов. Стандартно стоит 3, но это неудобно для тестового стенда.
Создаем указанные папки (предполагаем, что диски 1 и 2 смонтированы в /data/disk1 и /data/disk2 соответственно):
mkdir -p /data/disk1/dfs/namenode
mkdir -p /data/disk1/dfs/datanode
mkdir -p /data/disk2/dfs/datanode
И конфигурируем их права:
chown -R hdfs:hdfs /data/disk1/dfs/namenode /data/disk1/dfs/datanode /data/disk2/dfs/datanode
chmod 700 /data/disk1/dfs/namenode
Теперь форматируем namenode:
sudo -u hdfs hadoop namenode -format
Запускаем namenode:
/etc/init.d/hadoop-hdfs-namenode start
Запускаем data node:
/etc/init.d/hadoop-hdfs-datanode start
Создаем свою первую папку:
sudo -u hdfs hadoop fs -mkdir /mydirТестируем работу HDFS
Смотрим листинг корневой директории:
sudo -u hdfs hadoop fs -ls /
Found 1 items
drwxr-xr-x - hdfs hadoop 0 2013-10-24 00:26 /mydir
Кладем файл в HDFS (ВНИМАНИЕ! НЕ забываем, что мы работаем от имени пользователя hdfs, так что файл в локальной ФС должен быть доступен ему на чтение):
sudo -u hdfs hadoop fs -put /tmp/jre-7-linux-x64.rpm /mydir
Убеждаемся, что он лег:
sudo -u hdfs hadoop fs -ls /mydir
Found 1 items
-rw-r--r-- 3 hdfs hadoop 21203924 2013-10-24 00:36 /mydir/jre-7-linux-x64.rpm
Кстати говоря, большой тестовый файл можно взять вот здесь: http://proof.ovh.net/files/
Мониторинг HDFS
Его можно осуществлять посредством веб-скрипта: http://IP_адрес_вашей_namenode:50070/dfshealth.jsp
Настройка HDFS Fuse
Так как каждый раз пользоваться hadoop fs неудобно далеко не всегда, я рекомендую использовать Fuse модуль, чтобы смонтировать HDFS как обычную ФС (не забываем, HDFS - не Posix! Блокировки и правки файлов не поддерживаются).
yum install hadoop-hdfs-fuseМонтируем:
hadoop-fuse-dfs dfs://hadoop.fastvps.ru:8020 /mntВуаля, тот же файлик доступен как обычная файловая система:
ls -al /mnt/mydir/
итого 11G
drwxr-xr-x 3 hdfs hadoop 4,0K Окт 24 03:30 .
drwxr-xr-x 3 hdfs hadoop 4,0K Окт 24 03:21 ..
-rw-r--r-- 1 hdfs hadoop 10G Окт 24 03:30 10Gio.dat
Отмонтировать его можно стандартно:
umount /mntЧто дальше?
В следующей публикации я постараюсь поставить второй сервер как datanode, чтобы на практике протестировать функцию отказоустойчивости HDFS
Установка datanode на отдельном сервере
Устанавливаем Java по аналогии с предыдущим сервером, далее также конфигурируем hostname и /etc/hosts. Данный сервер назовем data1-hadoop.fastvps.ru.
Подразумеваем, что на данном сервере у нас один жесткий диск и он смонтирован в /data/disk1.
Так как мы подошли к вопросу распределенной фермы, то мы должны адрес name node забить в DNS либо же на каждой data node создать следующую запись в hosts (обоих серверов!!! Также нужно добавить хостнейм клиента на name node, то есть они должны знать друг друга! Иначе ничего работать не будет! Лучше всего, сразу внесите записи в DNS до начала тестов, а также убедитесь, что дата ноды и name нода находятся в одном домене второго уровня):
88.198.xx.xx hadoop.fastvps.ru hadoop
Далее ставим hadoop data node:
yum install -y hadoop-hdfs-datanode
Копируем стандартный конфиг для правки:
cp -r /etc/hadoop/conf.dist /etc/hadoop/conf.my_cluster
alternatives --verbose --install /etc/hadoop/conf hadoop-conf /etc/hadoop/conf.my_cluster 50
alternatives --set hadoop-conf /etc/hadoop/conf.my_cluster
Теперь нужно настроить кластер, в файле /etc/hadoop/conf.my_cluster/core-site.xml
В блок confguration вносим следующее (это имя нашего кластера):
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop.fastvps.ru/</value>
</property>
Далее открываем файл /etc/hadoop/conf.my_cluster/hdfs-site.xml и в блок configuration вносим:
<property> <name>dfs.permissions.superusergroup</name>
<value>hadoop</value></property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/data/disk1/dfs/datanode</value>
</property>
mkdir -p /data/disk1/dfs/datanode
Выставляем права:
chown -R hdfs:hdfs /data/disk1/dfs/datanode
Запускаем data node:
/etc/init.d/hadoop-hdfs-datanode start
Теперь можно открыть статистику HDFS и смотреть, как блоки нашего 10 гигабайтного файла реплицируются на вновь добавленный сервер.
Как репликация закончится, можно смело отключать второй сервер (отключив сервер с name node Вы выведете кластер из строя, да) и продолжать работать с файловой системой как ни в чем ни бывало!
Ура!
Источник: http://www.cloudera.com/content/cloudera-content/cloudera-docs/CDH4/4.2.0/CDH4-Installation-Guide/cdh4ig_topic_11_2.html
Thanks for sharing, nice post!
ReplyDeleteTọa lạc tại địa chỉ 61C Tú Xương. P. 7, Quận 3, TP. HCMCasanova là cafe dep tphcm được thiết kế hoàn toàn theo phong cách độc đáo của nước Ý, đây là quán cafe yên tĩnh tphcm không gian cổ điển đẹp hay cafe cappuccino với hương vị tuyệt hảo hay đây là quán quán cafe đẹp ở sài gòn với không gian tuyệt đẹp hay bạn có biết loi ich cua viec uong cafe đối với sức khỏe chưa, hay Casanova Cafe – không gian quán cafe ngồi làm việc lý tưởng của freelancer hay đây là quán cafe chụp ảnh không tính phí tại sài gòn bạn có thể tha hồ chụp ảnh, đây là quan cafe con hem nho cực đẹp bạn không nên bỏ qua hay đây là quán quan cafe tinh nhan o sai gon thích hợp hẹn hò hay đây là quán cafe học nhóm tphcm cực hợp có phòng riêng hay là 1 trong cà phê lãng mạn với đồ uống giá rẻ với thức uống đặc trưng cực ngon là trà đào cam sả uống 1 lần là nghiền hay đây là điểm hẹn cà phê cuối tuần với Casanova Cafe hay meo giup be ngu ngon giúp bé ngủ ngon giấc hay nôi võng giúp bé ngủ ngon hay cafe tổ chức sinh nhật tphcm cực lý tưởng hay những quán cà phê sân vườn đẹp ở sài gòn bạn không nên bỏ qua hay bạn muốn học bài thì quán cafe yên tĩnh học bài ở sài gòn cực thú vị đấy.