Наша новая материнская компания LexisNexis обладает одной из крупнейших в мире баз данных публичных записей:
«… Наша обширная коллекция из более чем 46 миллиардов записей из более чем 10 000 различных источников, включая публичные, частные, регулируемые и производные данные. Вы получаете исчерпывающую информацию о примерно 269 млн. Человек и 277 млн. Уникальных предприятий ».
http://www.lexisnexis.com/en-us/products/public-records.page
И они управляли, анализировали и искали эту базу данных в течение десятилетий. За это время они создали целый ряд технологий «больших данных». В совокупности LexisNexis называет эти технологии своей платформой высокопроизводительных вычислительных кластеров (HPCC).
HPCC полностью с открытым исходным кодом:
Естественно, мы работаем через объединение HPCC с нашим стеком управления и анализа данных в реальном времени. Потенциал действительно захватывающий. В частности, HPCC имеет сложные библиотеки машинного обучения и статистики и механизм запросов (Roxie), способный обслуживать эту статистику.
Не важно, HPCC может использовать Cassandra в качестве механизма хранения данных! (FTW!)
Платформа HPCC технически не поддерживается на Mac, но вот что я сделал для ее запуска:
HPCC Установить
- Клонировать репозиторий github и его подмодули (git submodule update –init –recursive)
- Вытащите мои патчи ( https://github.com/hpcc-systems/HPCC-Platform/pull/7166 )
- Установите зависимости используя brew
123456
brew install icu4cbrew install boostbrew install libarchivebrew install bison27brew install openldapbrew install nodejs - Создайте каталог для сборки и оттуда запустите cmake:
123
export CC=/usr/bin/clangexport CXX=/usr/bin/clang++cmake ../ -DICU_LIBRARIES=/usr/local/opt/icu4c/lib/libicuuc.dylib -DICU_INCLUDE_DIR=/usr/local/opt/icu4c/include -DLIBARCHIVE_INCLUDE_DIR=/usr/local/opt/libarchive/include -DLIBARCHIVE_LIBRARIES=/usr/local/opt/libarchive/lib/libarchive.dylib -DBOOST_REGEX_LIBRARIES=/usr/local/opt/boost/lib -DBOOST_REGEX_INCLUDE_DIR=/usr/local/opt/boost/include -DUSE_OPENLDAP=true-DOPENLDAP_INCLUDE_DIR=/usr/local/opt/openldap/include -DOPENLDAP_LIBRARIES=/usr/local/opt/openldap/lib/libldap_r.dylib -DCLIENTTOOLS_ONLY=false-DPLATFORM=true - Затем скомпилируйте и установите с помощью (sudo make install)
- После этого вам нужно немного поработать с разрешениями:
123
chmod -R a+rwx /opt/HPCCSystems/chmod -R a+rwx /var/lock/HPCCSystemschmod -R a+rwx /var/log/HPCCSystems - Теперь, как правило, вы запускаете hpcc-init для настройки системы, но этот скрипт не работает в OS X, поэтому я использовал linux для генерации работающих файлов конфигурации и разместил их в репозитории здесь: https://github.com/boneill42 / hpcc_on_mac
- Клонируйте этот репозиторий и замените / var / lib / HPCCSystems содержимым var_lib_hpccsystems.zip
123
sudo rm -fr /var/lib/HPCCSystemssudo unzip var_lib_hpccsystems.zip -d /var/libchmod -R a+rwx /var/lib/HPCCSystems - Затем из каталога, содержащего файлы XML в этом хранилище, вы можете запустить:
- daserver : (запускает сервер Dali, который является механизмом сохранения для HPCC)
- esp : (Запускает сервер ESP, который является веб-сервисом и уровнем пользовательского интерфейса для HPCC)
- eclccserver : (запускает сервер компиляции ECL, который берет ECL и компилирует его в C, а затем в dynmic библиотеку)
- roxie (запускает сервер Roxie, который способен отвечать на запросы)
- Начните каждый из них, тогда вы должны быть готовы запустить ECL. Затем перейдите по адресу http: // localhost: 8010 в браузере. Вы готовы запустить ECL!
Запуск ECL
Как и Pig с Hadoop, HPCC использует DSL под названием ECL. Более подробную информацию о ECL можно найти здесь: http://hpccsystems.com/download/docs/learning-ecl
- В качестве простого теста дыма перейдите в свой репозиторий платформы HPCC и перейдите по адресу: ./testing/regress/ecl.
- Затем выполните следующее:
- Вы должны увидеть следующее:
123
<dataset name="Result 1"><row><result_1>Hello world</result_1></row></dataset>
|
1
|
ecl run hello.ecl --target roxie --server=localhost:8010 |
Кассандра Плагин
Когда HPCC запущен и работает, мы готовы повеселиться с Cassandra. HPCC имеет плагины. Эти плагины находятся в / opt / HPCC / plugins. Мне пришлось скопировать эти библиотеки в / opt / HPCCSystems / lib, чтобы HPCC распознал их.
Вернитесь в каталог testing / regress / ecl и посмотрите на cassandra-simple.ecl. Фрагмент приведен ниже:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
|
childrec := RECORD string name, integer4 value { default(99999) }, boolean boolval { default(true) }, real8 r8 {default(99.99)}, real4 r4 {default(999.99)}, DATA d {default (D'999999')}, DECIMAL10_2 ddd {default(9.99)}, UTF8 u1 {default(U'9999 ß')}, UNICODE u2 {default(U'9999 ßßßß')}, STRING a, SET OF STRING set1, SET OF INTEGER4 list1, LINKCOUNTED DICTIONARY(maprec) map1{linkcounted};END;init := DATASET([{'name1', 1, true, 1.2, 3.4, D'aa55aa55', 1234567.89, U'Straße', U'Straße','Ascii',['one','two','two','three'],[5,4,4,3],[{'a'=>'apple'},{'b'=>'banana'}]}, {'name2', 2, false, 5.6, 7.8, D'00', -1234567.89, U'là', U'là','Ascii', [],[],[]}], childrec);load(dataset(childrec) values) := EMBED(cassandra : user('boneill'),keyspace('test'),batch('unlogged')) INSERT INTO tbl1 (name, value, boolval, r8, r4,d,ddd,u1,u2,a,set1,list1,map1) values (?,?,?,?,?,?,?,?,?,?,?,?,?);ENDEMBED; |
В этом примере мы определяем childrec как RECORD с набором полей. Затем мы создаем DATASET типа childrec. Затем мы определяем метод, который принимает набор данных типа childrec и запускает команду вставки Cassandra для каждой записи в наборе данных.
Запуск Кассандры локально. (скачайте Cassandra, разархивируйте его, затем запустите bin / cassandra -f (чтобы сохранить его на переднем плане))
Как только Cassandra включится, просто запустите ECL, как вы сделали программу hello.
|
1
|
ecl run cassandra-simple.ecl --target roxie --server=localhost:8010 |
Затем вы можете перейти к cqlsh и проверить, что все данные вернулись в Cassandra:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
|
➜ cassandra bin/cqlshConnected to Test Cluster at localhost:9160.[cqlsh 4.1.1 | Cassandra 2.0.7 | CQL spec 3.1.1 | Thrift protocol 19.39.0]Use HELP for help.cqlsh> select * from test.tbl1 limit 5; name | a | boolval | d | ddd | list1 | map1 | r4 | r8 | set1 | u1 | u2 | value-----------+---+---------+----------------+------+-------+------+--------+--------+------+ name1575 | | True | 0x393939393939 | 9.99 | null | null | 1576.6 | 1575 | null | 9999 ß | 9999 ßßßß | 1575 name3859 | | True | 0x393939393939 | 9.99 | null | null | 3862.9 | 3859 | null | 9999 ß | 9999 ßßßß | 3859 name11043 | | True | 0x393939393939 | 9.99 | null | null | 11054 | 11043 | null | 9999 ß | 9999 ßßßß | 11043 name3215 | | True | 0x393939393939 | 9.99 | null | null | 3218.2 | 3215 | null | 9999 ß | 9999 ßßßß | 3215 name7608 | | False | 0x393939393939 | 9.99 | null | null | 7615.6 | 7608.1 | null | 9999 ß | 9999 ßßßß | 7608 |
Хорошо, это должно дать немного вкуса ECL и HPCC. Это мощная платформа.
Как всегда, дайте мне знать, если у вас возникнут проблемы.
| Ссылка: | Высокопроизводительные вычислительные кластеры (HPCC) и Cassandra для OS X от нашего партнера по JCG Брайана ONeill в блоге |