<< Установка hadoop на centos 6 | На главную | HBase java client example >>

Установка 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

 

Ярлыки : , ,



Комментировать Отправить TrackBack
На главную