Вступление
Apache Accumulo - это распределенная база данных NoSQL с открытым исходным кодом, основанная на BigTable Google. Он используется для эффективного выполнения операций CRUD (Create Read Update Delete) на очень больших наборах данных (часто называемых большими данными). Accumulo предпочтительнее других аналогичных распределенных баз данных (таких как HBase или CouchDB), если проект требует детальной защиты в форме контроля доступа на уровне ячейки.
Accumulo построен поверх другого программного обеспечения Apache. Accumulo представляет свои данные в виде пар ключ-значение и сохраняет эти данные в виде файлов в HDFS (распределенная файловая система Apache Hadoop). Он также использует Apache ZooKeeper для синхронизации настроек между всеми его процессами.
В этом уроке вы научитесь:
-
Установите и настройте Apache HDFS и ZooKeeper: эти системы должны быть активны до запуска Accumulo
-
Установите и настройте автономный экземпляр Accumulo
Предпосылки
Вам понадобится следующее:
Шаг 1 - Установите и настройте JDK 7
Accumulo, HDFS и ZooKeeper написаны на Java и нуждаются в JVM (виртуальной машине Java) для запуска. Итак, начнем с установки JDK.
Обновите индекс списка пакетов.
sudo apt-get update
Установите OpenJDK 7 с помощью + apt-get
.
sudo apt-get install openjdk-7-jdk
Используйте + nano
для редактирования вашего файла оболочки,` + .bashrc`.
nano ~/.bashrc
Добавьте + JAVA_HOME +
в качестве переменной окружения в конце файла.
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386
_
* Примечание *: значение + JAVA_HOME +
может отличаться в зависимости от архитектуры вашего сервера. Например, на 64-битном сервере значение будет + / usr / lib / jvm / java-7-openjdk-amd64 +
. Вы можете увидеть точный путь, перечислив содержимое каталога + / usr / lib / jvm / +
. Если ваш путь отличается от того, что показан здесь, убедитесь, что вы внесли соответствующие изменения здесь и в других местах.
_
Сохраните файл и выйдите из + nano +
. Обновите переменные окружения текущего сеанса, набрав:
. ~/.bashrc
Отредактируйте файл конфигурации + java.security +
JVM с помощью + nano +
.
sudo nano $JAVA_HOME/jre/lib/security/java.security
Найдите параметр + securerandom.source +
и измените строку так, чтобы она выглядела следующим образом:
securerandom.source=file:/dev/./urandom
Сохраните файл и выйдите из + nano +
. Это изменение необходимо для уменьшения времени запуска JVM. Невыполнение этого изменения может привести к очень длительному времени запуска на большинстве виртуальных серверов.
Шаг 2 - Установите SSH
Hadoop нужен SSH и Rsync для управления своими демонами. Установите их с помощью следующей команды:
sudo apt-get install ssh rsync
Шаг 3 - Включите беспарольное SSH-соединение
Hadoop должен иметь возможность подключаться к вашему серверу по SSH без запроса пароля.
Сгенерируйте ключ RSA с помощью + ssh-keygen
.
ssh-keygen -P ''
Нажмите * ENTER * при появлении запроса, чтобы выбрать значения по умолчанию.
Добавьте сгенерированный ключ в файл + author_keys +
.
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
Значения + localhost +
и + 0.0.0.0 +
должны быть добавлены в список известных хостов. Самый простой способ сделать это - запустить команду + ssh +
.
Давайте сначала добавим + localhost +
.
ssh localhost
Вам будет предложено сообщение, которое выглядит следующим образом:
The authenticity of host 'localhost (127.0.0.1)' can't be established.
ECDSA key fingerprint is bf:01:63:5b:91:aa:35:db:ee:f4:7e:2d:36:e7:de:42.
Are you sure you want to continue connecting (yes/no)?
Введите + yes
и нажмите` + ENTER`.
После завершения входа в систему выйдите из дочернего сеанса SSH, введя:
exit
Давайте добавим + 0.0.0.0 +
сейчас.
ssh 0.0.0.0
Введите + yes
и нажмите` + ENTER` при появлении запроса.
Еще раз выйдите из дочернего сеанса SSH, введя:
exit
Настройка SSH завершена.
Шаг 4 - Создайте каталог загрузок
Вы будете загружать несколько файлов для этого урока. Хотя это и не нужно, но рекомендуется хранить все загруженные файлы в отдельном каталоге.
mkdir -p ~/Downloads
Войдите в каталог.
cd ~/Downloads
Шаг 5 - Загрузите Apache Hadoop
На момент написания последней стабильной версией Hadoop была * 2.6.0 *. Загрузите его с помощью + wget +
.
wget "http://www.eu.apache.org/dist/hadoop/common/stable/"
Шаг 6 - Загрузите Apache ZooKeeper
Последняя стабильная версия ZooKeeper - * 3.4.6 *. Загрузите его с помощью + wget +
.
wget "http://www.eu.apache.org/dist/zookeeper/stable/"
Шаг 7 - Загрузите Apache Accumulo
Последняя стабильная версия Accumulo - * 1.6.1 *. Загрузите его с помощью + wget +
.
wget "http://www.eu.apache.org/dist/accumulo/1.6.1/"
Шаг 8 - Создайте каталог установки
Создайте каталог для хранения всех наших установок, связанных с Accumulo.
mkdir -p ~/Installs
Войдите в каталог.
cd ~/Installs
Шаг 9 - Установите и настройте Hadoop
Используйте команду + tar +
для извлечения содержимого + hadoop-2.6.0-src.tar.gz +
.
tar -xvzf ~/Downloads/hadoop-2.6.0.tar.gz
_ * Примечание: * Если вы установили другую версию какого-либо из этих программ, пожалуйста, используйте соответствующую версию в вашем имени файла. _
Используйте + nano +
, чтобы открыть + hadoop-env.sh +
.
nano ~/Installs/hadoop-2.6.0/etc/hadoop/hadoop-env.sh
Найдите строку, начинающуюся с + export JAVA_HOME +
, и измените ее на:
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386
Убедитесь, что это значение совпадает со значением, установленным в + .bashrc
.
По умолчанию Hadoop генерирует много журналов отладки. Чтобы остановить это поведение, найдите строку, начинающуюся с + export HADOOP_OPTS +
, и измените ее на:
export HADOOP_OPTS="$HADOOP_OPTS -XX:-PrintWarnings -Djava.net.preferIPv4Stack=true"
Сохранить и выйти.
Используйте + nano
, чтобы открыть` + core-site.xml`.
nano ~/Installs/hadoop-2.6.0/etc/hadoop/core-site.xml
Добавьте + <свойство> +
имя блока + fs.defaultFS
. Его значение должно указывать на имя хоста и порт наменода (в нашем случае это + localhost +
и порт по умолчанию + 9000 +
). Игнорируя комментарии, отредактируйте ваш файл так, чтобы он выглядел так:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
Сохранить и выйти.
Используйте + nano
, чтобы открыть` + hdfs-site.xml`.
nano ~/Installs/hadoop-2.6.0/etc/hadoop/hdfs-site.xml
Следующие свойства должны быть добавлены в этот файл:
-
+ dfs.replication +
: это число указывает, сколько раз блок Hadoop реплицирует блок. По умолчанию Hadoop создает реплики+ 3 +
для каждого блока. В этом руководстве используйте значение+ 1 +
, так как мы не создаем кластер. -
+ dfs.name.dir +
: указывает на место в файловой системе, где namenode может хранить таблицу имен. Вы должны изменить это, потому что Hadoop по умолчанию использует+ / tmp +
. Давайте используем+ hdfs_storage / name +
для хранения таблицы имен. -
+ dfs.data.dir +
: указывает на местоположение в файловой системе, где датоде следует хранить свои блоки. Вы должны изменить это, потому что Hadoop по умолчанию использует+ / tmp +
. Давайте используем+ hdfs storage / data
для хранения блоков данных.
Игнорируя комментарии, после добавления этих свойств ваш файл должен выглядеть следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>hdfs_storage/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>hdfs_storage/data</value>
</property>
</configuration>
Используйте + nano
для создания нового файла с именем` + mapred-site.xml`.
nano ~/Installs/hadoop-2.6.0/etc/hadoop/mapred-site.xml
Добавьте свойство с именем + mapred.job.tracker +
к этому файлу. Это свойство содержит имя хоста и номер порта, на котором работает средство отслеживания заданий MapReduce. Для нашей настройки используйте + localhost +
и порт по умолчанию + 9001 +
.
Добавьте следующее содержимое в файл:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
Войдите в базовый каталог Hadoop (это важно, потому что Hadoop создает каталог + hdfs_storage +
в текущем каталоге).
cd ~/Installs/hadoop-2.6.0/
NameNode теперь можно инициализировать, набрав:
~/Installs/hadoop-2.6.0/bin/hdfs namenode -format
Вы должны увидеть совсем немного продукции.
Затем запустите NameNode, набрав:
~/Installs/hadoop-2.6.0/sbin/start-dfs.sh
Подождите минуту или две, чтобы это началось. После запуска вы можете использовать браузер, чтобы перейти к + http: // <your-ip>: 50070 / +
и просмотреть веб-интерфейс NameNode.
изображение: https: //assets.digitalocean.com/articles/accumulo_nosqldatabase/1.png [Веб-интерфейс Hadoop NameNode]
Поиск проблемы
Если вы не можете получить доступ к веб-интерфейсу, проверьте, активен ли NameNode, с помощью следующей команды:
jps
Ваш вывод должен содержать следующие три процесса вместе с процессом + Jps +
:
-
+ +
DataNode -
+ +
NameNode -
+ +
SecondaryNameNode
Если вы видите, что + NameNode +
отсутствует в выходных данных, выполните следующие шаги. Если они не выполняются в блоке, возможно, вам придется запускать их отдельно. Комментарии включены в строке.
cd ~/Installs/hadoop-2.6.0/
~/Installs/hadoop-2.6.0/sbin/stop-dfs.sh # Stop Hadoop's nodes
rm -rf hdfs_storage # Delete the namenode data
rm -rf /tmp/hadoop-* # Delete the temporary directories
~/Installs/hadoop-2.6.0/bin/hdfs namenode -format # Reformat the namenode
Перезапустите Hadoop, используя + start-dfs.sh +
:
~/Installs/hadoop-2.6.0/sbin/start-dfs.sh
Вы должны быть в состоянии получить доступ к веб-интерфейсу сейчас.
Шаг 10 - Установите и настройте ZooKeeper
Войдите в каталог + Installs +
.
cd ~/Installs
Используйте + tar
для извлечения` + zookeeper-3.4.6.tar.gz`.
tar -xvzf ~/Downloads/zookeeper-3.4.6.tar.gz
Скопируйте файл примера + zoo_sample.cfg +
в + zoo.cfg +
.
cp ~/Installs/zookeeper-3.4.6/conf/zoo_sample.cfg ~/Installs/zookeeper-3.4.6/conf/zoo.cfg
Настройка ZooKeeper завершена. Запустите ZooKeeper, введя:
~/Installs/zookeeper-3.4.6/bin/zkServer.sh start
Вы должны увидеть результат, который выглядит следующим образом:
JMX enabled by default
Using config: ~/Installs/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
Шаг 11 - Установите и настройте Accumulo
Теперь, когда все его зависимости удовлетворены, пришло время приступить к установке самого Accumulo.
Войдите в каталог + Installs +
.
cd ~/Installs
Извлеките + gastulo-1.6.1-bin.tar.gz
, используя` + tar`:
tar -xvzf ~/Downloads/accumulo-1.6.1-bin.tar.gz
Accumulo поставляется с примерами конфигураций для серверов с различными объемами памяти: 512 МБ, 1 ГБ, 2 ГБ и 3 ГБ. В этом уроке я собираюсь использовать конфигурацию для 512 МБ. Вы можете выбрать другие конфигурации, если ваш сервер имеет больше памяти.
Скопируйте файлы конфигурации 512 МБ в каталог + conf +
.
cp ~/Installs/accumulo-1.6.1/conf/examples/512MB/standalone/* ~/Installs/accumulo-1.6.1/conf/
Используйте + nano
для повторного редактирования вашей оболочки, используя файл` + .bashrc`.
nano ~/.bashrc
Добавьте следующие переменные среды в этот файл:
-
HADOOP_HOME: путь к установке Hadoop
-
ZOOKEEPER_HOME: путь к установке ZooKeeper
Добавьте следующие строки в ваш файл:
export HADOOP_HOME=~/Installs/hadoop-2.6.0/
export ZOOKEEPER_HOME=~/Installs/zookeeper-3.4.6/
Сохранить и выйти.
Обновите среду так, чтобы переменные, которые вы добавили в + .bashrc +
, были доступны в текущем сеансе.
. ~/.bashrc
Используйте + nano +
для редактирования +акопитель- env.sh +
.
nano ~/Installs/accumulo-1.6.1/conf/accumulo-env.sh
По умолчанию монитор HTTP Accumulo привязывается только к интерфейсу локальной сети. Чтобы иметь доступ к нему через Интернет, вы должны установить значение + ACCUMULO_MONITOR_BIND_ALL +
в + true +
.
Найдите строку, которая начинается с + export ACCUMULO_MONITOR_BIND_ALL +
, и раскомментируйте ее. Это должно выглядеть так:
export ACCUMULO_MONITOR_BIND_ALL="true"
Сохранить и выйти.
Используйте + nano
для редактирования` +акопитель-site.xml`.
nano ~/Installs/accumulo-1.6.1/conf/accumulo-site.xml
Рабочие процессы Accumulo взаимодействуют друг с другом с помощью секретного ключа. Это должно быть изменено на строку, которая является безопасной. Найдите свойство + instance.secret +
и измените его значение. Я собираюсь использовать эту строку: ++
. XML для свойства должен выглядеть следующим образом:
<property>
<name>instance.secret</name>
<value></value>
<description>A secret unique to a given instance that all servers must know in order to communicate with one another.
Change it before initialization. To
change it later use ./bin/accumulo org.apache.accumulo.server.util.ChangeSecret --old [oldpasswd] --new [newpasswd],
and then update this file.
</description>
</property>
Затем добавьте новое свойство с именем + instance.volumes +
. Значение этого свойства указывает, где Accumulo должен хранить свои данные в HDFS. Давайте сохраним данные в каталоге + / gastulo +
.
<property>
<name>instance.volumes</name>
<value>hdfs://localhost:9000/accumulo</value>
</property>
Найдите свойство + trace.token.property.password +
и установите его значение в безопасное состояние. Запомните это значение, так как оно понадобится вам на следующем шаге. Я собираюсь установить это в ++
.
<property>
<name>trace.token.property.password</name>
<value></value>
</property>
Сохранить и выйти.
Инициализируйте Accumulo.
~/Installs/accumulo-1.6.1/bin/accumulo init
Вам будет предложено ввести * имя экземпляра *. Используйте любое имя по вашему выбору. Я выбираю + DIGITAL_OCEAN +
.
Далее вам будет предложено ввести пароль. Введите тот же пароль, который вы использовали для свойства + trace.token.property.password +
.
Как только команда завершится, вы можете запустить Accumulo.
~/Installs/accumulo-1.6.1/bin/start-all.sh
Вы можете увидеть несколько предупреждений, рекомендующих более высокие значения для определенных системных параметров. Поскольку в этом руководстве мы создаем очень маленький экземпляр, вы можете игнорировать эти предупреждения.
После завершения запуска вы можете использовать браузер для посещения веб-интерфейса Accumulo по адресу + http: // <your-server-ip>: 50095 +
.
изображение: https: //assets.digitalocean.com/articles/accumulo_nosqldatabase/2.png [веб-интерфейс Accumulo]
Заключение
Из этого руководства вы узнали, как настроить Apache Accumulo и все другие компоненты, от которых он зависит. Сегодня мы создали очень простую установку с использованием HDFS в псевдораспределенном режиме, которая может работать на одном небольшом сервере. Для достижения оптимальной производительности в производственном сценарии HDFS должна работать в полностью распределенном режиме.
В производственных сценариях также настоятельно рекомендуется развертывать эти процессы на серверах, имеющих не менее 8 ГБ ОЗУ и 4 или более процессорных ядер, чтобы каждый процесс мог использовать более 2 ГБ памяти и отдельное ядро. Кроме того, вы можете развернуть компоненты отдельно на разных серверах.
Для получения дополнительной информации см. Http://accumulo.apache.org/index.html[user[ Apache Accumulo].