Графический кластер Aurelius представляет собой кластер совместимых графовых технологий, которые могут быть развернуты на вычислительном кластере с несколькими машинами . В этом посте показано, как настроить кластер в Amazon EC2 (популярном поставщике облачных услуг) с использованием следующих графических технологий:


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

agc-masterэто скромная машина m1.small. На agc-master, Apache жужжание 0.8.0 загружается и распаковывается.
~$ ssh ubuntu@ec2-184-72-209-80.compute-1.amazonaws.com ... ubuntu@ip-10-117-55-34:~$ wget http://www.apache.org/dist/whirr/whirr-0.8.0/whirr-0.8.0.tar.gz ubuntu@ip-10-117-55-34:~$ tar -xzf whirr-0.8.0.tar.gz

agc.propertiesна agc-master. Рецепт определяет большой машинный кластер на 5 мкл, содержащий HBase 0.94.1 и Hadoop 1.0.3 (см. whirr.instance-templates). HBase будет служить механизмом сохранения базы данных для Titan, а Hadoop будет служить средством пакетного вычисления для Faunus.
whirr.cluster-name=agc
whirr.instance-templates=1 zookeeper+hadoop-namenode+hadoop-jobtracker+hbase-master,4 hadoop-datanode+hadoop-tasktracker+hbase-regionserver
whirr.provider=aws-ec2
whirr.identity=${env:AWS_ACCESS_KEY_ID}
whirr.credential=${env:AWS_SECRET_ACCESS_KEY}
whirr.hardware-id=m1.large
whirr.image-id=us-east-1/ami-da0cf8b3
whirr.location-id=us-east-1
whirr.hbase.tarball.url=http://archive.apache.org/dist/hbase/hbase-0.94.1/hbase-0.94.1.tar.gz
whirr.hadoop.tarball.url=http://archive.apache.org/dist/hadoop/core/hadoop-1.0.3/hadoop-1.0.3.tar.gz
hbase-site.dfs.replication=2
От agc-master, следующие команды запустят ранее описанный кластер. Обратите внимание, что первые две строки требуют конкретной информации об учетной записи Amazon EC2. Когда запуск завершится, консоль веб-администратора Amazon EC2 покажет 5 машин m1.large.
ubuntu@ip-10-117-55-34:~$ export AWS_ACCESS_KEY_ID= # requires account specific information ubuntu@ip-10-117-55-34:~$ export AWS_SECRET_ACCESS_KEY= # requires account specific information ubuntu@ip-10-117-55-34:~$ ssh-keygen -t rsa -P '' ubuntu@ip-10-117-55-34:~$ whirr-0.8.0/bin/whirr launch-cluster --config agc.properties

Загрузка графических данных в Titan

Для простоты 1 zookeeper+hadoop-namenode+hadoop-jobtracker+hbase-masterмашина будет использоваться для взаимодействия кластеров. IP-адрес можно найти в метаданных экземпляра Whirr agc-master. Причиной использования этого компьютера является то, что на нем уже установлено множество служб (например, оболочка HBase , Hadoop и т. Д.), И, следовательно, установка программного обеспечения вручную не требуется agc-master.
ubuntu@ip-10-117-55-34:~$ more .whirr/agc/instances us-east-1/i-3c121b41 zookeeper,hadoop-namenode,hadoop-jobtracker,hbase-master 54.242.14.83 10.12.27.208 us-east-1/i-34121b49 hadoop-datanode,hadoop-tasktracker,hbase-regionserver 184.73.57.182 10.40.23.46 us-east-1/i-38121b45 hadoop-datanode,hadoop-tasktracker,hbase-regionserver 54.242.151.125 10.12.119.135 us-east-1/i-3a121b47 hadoop-datanode,hadoop-tasktracker,hbase-regionserver 184.73.145.69 10.35.63.206 us-east-1/i-3e121b43 hadoop-datanode,hadoop-tasktracker,hbase-regionserver 50.16.174.157 10.224.3.16
Попав в машину через
ssh , Titan 0.1.0 загружается, распаковывается и
запускается консоль Gremlin .
ubuntu@ip-10-117-55-34:~$ ssh 54.242.14.83 ...ubuntu@ip-10-12-27-208:~$ wget https://github.com/downloads/thinkaurelius/titan/titan-0.1.0.zip ubuntu@ip-10-12-27-208:~$ sudo apt-get install unzip ubuntu@ip-10-12-27-208:~$ unzip titan-0.1.0.zip ubuntu@ip-10-12-27-208:~$ cd titan-0.1.0/ ubuntu@ip-10-12-27-208:~/titan-0.1.0$ bin/gremlin.sh \,,,/ (o o) -----oOOo-(_)-oOOo----- gremlin>
Игрушечный 1 миллион вершин / ребер загружается в Titan с помощью приведенного ниже скрипта Gremlin / Groovy (просто вырезайте и вставляйте исходный код в консоль Gremlin и подождите примерно 3 минуты). Код реализует алгоритм предпочтительного вложения . Объяснение этого алгоритма см. Во втором столбце на стр. 33 в статье Марка Ньюмана « Структура и функции сложных сетей» .
// connect Titan to HBase in batch loading mode
conf = new BaseConfiguration()
conf.setProperty('storage.backend','hbase')
conf.setProperty('storage.hostname','localhost')
conf.setProperty('storage.batch-loading','true');
g = TitanFactory.open(conf)
// preferentially attach a growing vertex set
size = 1000000; ids = [g.addVertex().id]; rand = new Random();
(1..size).each{
v = g.addVertex();
u = g.v(ids.get(rand.nextInt(ids.size())))
g.addEdge(v,u,'linked');
ids.add(u.id);
ids.add(v.id);
if(it % 10000 == 0) {
g.stopTransaction(SUCCESS)
println it
}
}; g.shutdown()
Пакетная аналитика с Faunus

1 zookeeper+hadoop-namenode+hadoop-jobtracker+hbase-masterмашины Faunus 0.1-alpha загружается и распаковывается. Предоставленный titan-hbase.propertiesфайл должен быть обновлен с hbase.zookeeper.quorum=10.12.27.208вместо localhost. IP — адрес 10.12.27.208 предоставляется ~/.whirr/agc/instancesна agc-master. Наконец, консоль Gremlin запускается.
ubuntu@ip-10-12-27-208:~$ wget https://github.com/downloads/thinkaurelius/faunus/faunus-0.1-alpha.zip ubuntu@ip-10-12-27-208:~$ unzip faunus-0.1-alpha.zip ubuntu@ip-10-12-27-208:~$ cd faunus-0.1-alpha/ ubuntu@ip-10-12-27-208:~/faunus-0.1-alpha$ vi bin/titan-hbase.properties ubuntu@ip-10-12-27-208:~/faunus-0.1-alpha$ bin/gremlin.sh \,,,/ (o o) -----oOOo-(_)-oOOo----- gremlin>
Несколько примеров рабочих мест Faunus представлены ниже. Последняя работа в строке 9 генерирует
распределение в градусах .
В степени вершины определяется как число ребер , входящих в вершину. Выводимый результат указывает, сколько вершин (второй столбец) имеют конкретную степень (первый столбец). Например, 167 050 вершин имеют только 1 входящее ребро.
gremlin> g = FaunusFactory.open('bin/titan-hbase.properties')
==>faunusgraph[titanhbaseinputformat]
gremlin> g.V.count() // how many vertices in the graph?
==>1000001
gremlin> g.E.count() // how many edges in the graph?
==>1000000
gremlin> g.V.out.out.out.count() // how many length 3 paths are in the graph?
==>988780
gremlin> g.V.sideEffect('{it.degree = it.inE.count()}').degree.groupCount // what is the graph's in-degree distribution?
==>1 167050
==>10 2305
==>100 6
==>108 3
==>119 3
==>122 3
==>133 1
==>144 2
==>155 1
==>166 2
==>18 471
==>188 1
==>21 306
==>232 1
==>254 1
==>...
gremlin>
В заключение, результат распределения в градусах взят из HDFS Hadoop (хранится в output/job-0). Затем scp используется для загрузки файла, agc-masterа затем снова для загрузки файла на локальный компьютер (например, ноутбук). Если на локальном компьютере установлен R , то файл можно построить и визуализировать (см. Последнюю диаграмму ниже). Логарифмический график демонстрирует известный результат , что алгоритм льготного вложения генерирует граф с степенным распределением степени (то есть «естественная» статистика).
ubuntu@ip-10-12-27-208:~$ hadoop fs -getmerge output/job-0 distribution.txt
ubuntu@ip-10-12-27-208:~$ head -n5 distribution.txt
1 167050
10 2305
100 6
108 3
119 3
ubuntu@ip-10-12-27-208:~$ exit
...
ubuntu@ip-10-117-55-34:~$ scp 54.242.14.83:~/distribution.txt .
ubuntu@ip-10-117-55-34:~$ exit
...
~$ scp ubuntu@ec2-184-72-209-80.compute-1.amazonaws.com:~/distribution.txt .
~$ r
> t = read.table('distribution.txt')
> plot(t,log='xy',xlab='in-degree',ylab='frequency')
Вывод
Aurelius Graph Cluster используется для обработки крупномасштабных графов, где массовый масштаб обозначает граф, настолько большой, что он не помещается в пределах ресурсов одной машины. Другими словами, кластер графов Аурелия — это все о данных больших графов. В этом посте были рассмотрены две кластерные технологии: Титан и Фаунус . Они служат двум различным потребностям вычисления графа. Titan поддерживает тысячи одновременных топологически локальных взаимодействий графов в реальном времени. Faunus, с другой стороны, поддерживает длительный, топологически глобальный анализ графов. Другими словами, они обеспечивают функциональность OLTP и OLAP соответственно.
Рекомендации
Лондон, Г., « Настройка кластера Hadoop / HBase на EC2 в (О) часе », Cloudera Developer Center, октябрь 2012 г.
Ньюман, М., « Структура и функции сложных сетей », SIAM Review, том 45, страницы 167-256, 2003.
Джейкобс А., « Патологии больших данных », ACM Communications, том 7, номер 6, июль 2009 г.





