Установка HBase в режиме псевдо-кластера
Как установить HBase поверх Hadoop
Hadoop - мощная система хранения и обработки больших массивов данных, но она слабо приспособлена для хранения и обработки данных небольшого объема на один объект, но большого количества экземпляров.
В этом случае рекомендуется использовать HBase - NoSQL база хранения работающая поверх Hadoop.
1. Установка Hadoop
Системой хранения в HBase может быть локальное хранилище или файловая система Hadoop. О том как установить Hadoop читаем в предыдущем материале.
2. Создание пользователя HBase
# useradd hbase # passwd hbase
Changing password for user hadoop. New password: Retype new password: passwd: all authentication tokens updated successfully.
3. Настройка SSH авторизации по ключу.
Hbase использует в работе ssh доступ к серверам кластера. Для этого необходимо сгенерировать ключи.
# su - hbase $ ssh-keygen -t rsa $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys $ chmod 0600 ~/.ssh/authorized_keys $ exit
4. Загрузка дистрибутива
Качаем дистрибутив http://apache-mirror.rbc.ru/pub/apache/hbase/hbase-0.94.12/
# mkdir /opt/hbase # cd /opt/hbase/ # wget http://apache-mirror.rbc.ru/pub/apache/hbase/hbase-0.94.12/hbase-0.94.12.tar.gz # tar -xzf hbase-0.94.12.tar.gz # mv hbase-0.94.12 hbase # chown -R hbase /opt/hbase # cd /opt/hbase/hbase/
5. Конфигурация HBase
Для локальной версии (не наш вариант) можно настроить в файле conf/hbase-site.xml:
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>hbase.rootdir</name> <value>file:///DIRECTORY/hbase</value> </property> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/DIRECTORY/zookeeper</value> </property> </configuration>
Для установки HBase поверх Hadoop нужно настраивать хранилище с использованием HDFS. Файл conf/hbase-site.xml:
<configuration>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/user/hbase</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/opt/hbase/hbase/tmp</value>
</property>
</configuration>
Прописываем пути к JAVA и к HBASE в файле conf/hbase-env.sh:
# The java implementation to use. Java 1.6 required. export JAVA_HOME=/usr/local/jdk16 export HBASE_HOME=/opt/hbase/hbase/
Для localhost необходимо создать запись в файле /etc/hosts:
127.0.0.1 localhost
6.Создание хранилища в hadoop
$ hadoop fs -mkdir /user/hbase $ hadoop fs -chown hbase:hbase /user/hbase
7. Запуск HBase
Запускаем HBase командой:
$ ./bin/start-hbase.sh starting Master, logging to logs/hbase-master-localhost.out
Проверяем что все процессы запущены:
$ jps 4585 SecondaryNameNode 4055 NameNode 5674 HRegionServer 5439 HMaster 5388 HQuorumPeer 4939 TaskTracker 4326 DataNode 5852 Jps 4686 JobTracker
Если получаем ошибку:
hbase failed to map segment from shared object: Operation not permitted
, то директория /tmp смонтирована в режиме noexec, значит необходимо выполнить команду:
$ mount -o remount exec /tmp
8. Тестирование HBase
Запускаем оболочку Hbase с помощью команды hbase shell:
$ ./bin/hbase shell HBase Shell; enter 'help' for list of supported commands. Type "exit " to leave the HBase Shell Version 0.94.12, r1524863, Fri Sep 20 04:44:41 UTC 2013 hbase(main):001:0>
Теперь можно создать тестовую таблицу:
hbase(main):001:0> create 'books','property' 0 row(s) in 2.7240 seconds hbase(main):002:0> list 'books' TABLE books 1 row(s) in 0.0280 seconds hbase(main):004:0> create 'books','property' 0 row(s) in 1.8780 seconds hbase(main):005:0> put 'books', 'row1', 'property:title', 'Alice in wonderland' 0 row(s) in 0.0140 seconds hbase(main):006:0> put 'books', 'row2', 'property:title', 'Moby Dick' 0 row(s) in 0.0040 seconds hbase(main):007:0> put 'books', 'row3', 'property:title', 'War and Peace' 0 row(s) in 0.0030 seconds hbase(main):008:0> scan 'books' ROW COLUMN+CELL row1 column=property:title, timestamp=1382274949430, value=Alice in wonderland row2 column=property:title, timestamp=1382274991210, value=Moby Dick row3 column=property:title, timestamp=1382275024575, value=War and Peace 3 row(s) in 0.0210 seconds
Когда тестировать надоест, можно удалить таблицу выполнив:
hbase(main):002:0> disable 'books' 0 row(s) in 1.5110 seconds hbase(main):003:0> drop 'books' 0 row(s) in 1.8230 seconds