Статьи

Как создавать приложения на базе данных документов NoSQL и выполнять аналитику на месте

В этой статье мы рассмотрим, что значит иметь конвергентную платформу данных для создания и доставки бизнес-приложений. Этот пример приложения будет создавать статьи блога для личного сайта.

На следующем рисунке показан поток данных и то, как приложение MapR-DB Rest использует OJAI API для взаимодействия с таблицами JSON MapR-DB. Затем мы рассмотрим, как запустить ANSI SQL с использованием Apache Drill 1.6 в тех же таблицах JSON MapR-DB, без необходимости преобразования или перемещения данных в другое место.

Получите что-нибудь в его естественной форме и используйте стандартные инструменты для аналитики на месте.

maprdb к би-инструментов

Это приложение MapR-DB REST содержит следующие компоненты:

  • Основной класс, который запускает Jetty Server и настраивает интерфейс REST, используя JAX-RS
  • Swagger для легкого доступа к HTTP API
  • Приложение Angular JS, которое использует этот API

Для начала вам понадобится установка MapR или песочница с 5.1 и Apache Drill 1.6 с минимум 8 ГБ оперативной памяти. Если у вас это уже есть, перейдите в раздел «Настройка среды сборки».

Получение песочницы MapR 5.1 (если требуется)

Загрузите изолированную программную среду MapR 5.1, следуя инструкциям здесь http://maprdocs.mapr.com/51/index.html#SandboxHadoop/t_install_sandbox_vmware.html

Эта песочница должна иметь доступ к Интернету для завершения остальной части установки.

Убедитесь, что вы увеличили объем оперативной памяти с 6 до 8 Гбайт на виртуальной машине перед ее запуском Для Apache Drill потребуется 2 ГБ ОЗУ.

После установки и запуска песочницы вы должны увидеть следующий экран. Обратите внимание, я использую VM Fusion на Mac OSX

mapr-песочница-установки

Войдите в кластер как mapr, обратите внимание, IP-адрес вашей Песочницы может отличаться от моего примера.

1
2
3
4
5
6
7
8
9
$ ssh mapr@192.168.185.248
The authenticity of host '192.168.185.248 (192.168.185.248)' can't be established.
RSA key fingerprint is 6a:36:ea:47:74:e6:57:92:e0:12:c4:8f:ee:64:09:20.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.185.248' (RSA) to the list of known hosts.
Password: mapr
Welcome to your Mapr Demo virtual machine.
[mapr@maprdemo ~]$
Password :- mapr

Настройка среды сборки

Чтобы иметь возможность собрать приложение для восстановления MapR-DB, нам сначала нужно настроить Maven.

Эти инструкции установят Maven 3 на Centos, чтобы мы могли скомпилировать приложение OJAI. Пожалуйста, измените соответственно для дистрибутива на основе Ubuntu

01
02
03
04
05
06
07
08
09
10
11
$ su - root
Password: mapr
# yum install git
# wget http://mirror.cc.columbia.edu/pub/software/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
# tar xvf apache-maven-3.3.9-bin.tar.gz -C /usr/local
# cd /usr/local
# ln -s apache-maven-3.3.9/ maven
# vi /etc/profile.d/maven.sh
add the following lines.
export M2_HOME=/usr/local/maven
export PATH=${M2_HOME}/

Выйдите из песочницы и вернитесь, чтобы получить эти изменения. Вы должны увидеть следующее.

01
02
03
04
05
06
07
08
09
10
11
$ ssh mapr@192.168.185.248
Password: mapr
Last login: Thu Apr  7 23:58:05 2016 from 192.168.185.1
Welcome to your Mapr Demo virtual machine.
[mapr@maprdemo ~]$ mvn -version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T08:41:47-08:00)
Maven home: /usr/local/maven
Java version: 1.7.0_79, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.79.x86_64/jre
Default locale: en_GB, platform encoding: UTF-8
OS name: "linux", version: "2.6.32-573.el6.x86_64", arch: "amd64", family: "unix"

Загрузка и компиляция приложения MapR-DB Rest

Следующие инструкции сначала настроят структуру каталогов в MapR-FS, загрузят приложение для восстановления MapR-DB, скомпилируют его и, наконец, запустят.

Как пользователь MapR

1
2
3
4
5
6
7
8
# cd /mapr/demo.mapr.com/
# chmod 777 apps
# mkdir apps/blog
# chmod 777 apps/blog
# cd /home/mapr
# git clone https://github.com/mapr-demos/maprdb-ojai-rest-sample.git
# cd maprdb-ojai-rest-sample/
# mvn clean package

Наконец, запустите программу, введя следующую команду. Обратите внимание, что это заблокирует консоль, поэтому вам может понадобиться другая консоль в кластере для запуска дополнительных команд.

1
# mvn exec:java -Dexec.mainClass="com.mapr.db.samples.rest.Main"

Обратите внимание, что иногда порт 8080 уже используется, это можно изменить, изменив порты в следующем файле и затем перекомпилировав приложение.

1
/home/mapr/maprdb-ojai-rest-sample/src/main/java/com/mapr/db/samples/rest/ Main.java

Изучите приложение для отдыха MapR-DB

Пожалуйста, не стесняйтесь исследовать приложение Rest MapR-DB и создавать столько статей для вашего блога, сколько вам нужно для демонстрации или тестирования.

После запуска сервера вы можете получить доступ к интерфейсу Swagger, используя следующий URI:

  • Http: // <ip_address>: 8080 / чванство

Или веб-приложения

  • Http: // <ip_address>: 8080 / приложение / # /

maprdb-Оджаи-образец-приложение

Вы можете использовать веб-приложение для создания пользователя и публикации в блоге.

Затем в интерфейсе Swagger вы можете обнаружить некоторые интересные функции:

  • Создать пользователя из предопределенного объекта JSON
1
{"_id":"2","first_name":"Leon","last_name":"Clayton","age":"46"}
  • Создать статью из строки JSON [a] [b]
1
{"title":"Article1","content":"Here is the content","author":{"name":"leon clayton","id":"1"}}
  • Список пользователей, используя простую проекцию

чванство-пользователи-апи

  • Обновите пользователя, чтобы добавить псевдоним, добавить интересы и удалить эти атрибуты. Вы видите здесь гибкую схему в действии

чванство-статья-апи

Подобные функции представлены в API REST для статей.

maprdb-вывода

После того как вы создали несколько пользователей и постов, теперь мы можем использовать Apache Drill для доступа к тем же таблицам MapR-DB JSON.

Установка Apache Drill

Если вы используете MapR Sandbox, у вас уже должен быть установлен Apache Drill, но если в вашей установке не установлен Apache Drill, следуйте приведенным ниже инструкциям.

В качестве пользователя root нам нужно установить Apache Drill 1.6 или выше. Сначала очистите и обновите кэш yum, чтобы убедиться, что мы получили последнюю версию.

1
2
3
# su - root
# yum clean all
# yum makecache

Пожалуйста, убедитесь, что следующее говорит Drill 1.6 или выше, прежде чем продолжить. Это загрузит 300 МБ, поэтому это может занять некоторое время.

01
02
03
04
05
06
07
08
09
10
11
12
# yum install mapr-drill
Loaded plugins: fastestmirror, security
Setting up Install Process
Loading mirror speeds from cached hostfile
 * base: mirror.vorboss.net
 * epel: www.mirrorservice.org
 * extras: mirror.vorboss.net
 * updates: mirror.vorboss.net
Resolving Dependencies
--> Running transaction check
---> Package mapr-drill.noarch 0:1.6.0.201603302146-1 will be installed
--> Finished Dependency Resolution

Получить новый сервер, чтобы забрать Apache Drill

1
2
3
4
5
6
7
8
9
# /opt/mapr/server/configure.sh -R
Configuring Hadoop-2.7.0 at /opt/mapr/hadoop/hadoop-2.7.0
Done configuring Hadoop
Node setup configuration:  cldb drill-bits fileserver hbasethrift hbinternal historyserver hivemetastore hiveserver2 hue nfs nodemanager oozie resourcemanager spark-historyserver webserver zookeeper
Log can be found at:  /opt/mapr/logs/configure.log
  setting CATALINA_OPTS="$CATALINA_OPTS -Xmx1024m"
New Oozie WAR file with added 'Hadoop JARs, ExtJS library, JARs' at /opt/mapr/oozie/oozie-4.2.0/oozie-hadoop1.war
New Oozie WAR file with added 'Hadoop JARs, ExtJS library, JARs' at /opt/mapr/oozie/oozie-4.2.0/oozie-hadoop2.war
INFO: Oozie is ready to be started->

Анализ таблиц JSON MapR-DB с использованием Apache Drill

Давайте используем графический интерфейс Apache Drill для просмотра таблиц, которые только что создало приложение OJAI. Apache Drill может управляться любым инструментом BI через соединения ODBC или JDBC. В следующем примере я использовал веб-интерфейс Drill, но вы можете легко использовать здесь все, что захотите.
Перейдите к порту 8047 в песочнице и вы увидите вариант запроса. В запросе введите следующее и нажмите отправить.

1
select * from dfs.`default`.`/apps/blog/articles`

апач-бур-запрос-опция

Вы увидите следующие результаты.

апач-бур-просмотр

Вторым тестом является следующий запрос

1
select * from dfs.`default`.`/apps/blog/users`

запрос-пример

Здесь, в этой статье, мы изучили, как настроить приложение, работающее поверх таблиц JSON MapR-DB, и как запрашивать эти данные без необходимости перемещать или преобразовывать данные из исходного формата хранения. Поскольку JSON самоописывает себя, это позволяет другим легко понимать и запрашивать используемые структуры данных. Это очень мощная функция, которая может быть использована для оптимизации разработки приложений и аналитики. Я надеюсь, что вы нашли это полезным.