Как установить базу данных Apache Accumulo NoSQL, дружественную к большим данным, в Ubuntu 14.04

Вступление

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

Предпосылки

Вам понадобится следующее:

  • Сервер Ubuntu 14.04 (желательно 32-битный)

  • Пользователь sudo

  • Не менее 2 ГБ пространства swap

Шаг 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].

Related