Быстрый старт#
Руководство по первому запуску DataGrid.
Примечание
Информация по установке указана в документе «Руководство по установке».
Запуск узла#
Запустить узел можно из командной строки с помощью конфигурации по умолчанию. Также можно добавить в директорию DataGrid пользовательский файл конфигурации.
Можно запускать несколько узлов сразу. Они автоматически обнаружат друг друга.
Для запуска узла:
Из командной строки перейдите в папку
binв установочной директории DataGrid. Примеры команды входа:cd {IGNITE_HOME}/bin/Запустите узел. Передайте пользовательский файл конфигурации в
ignite.sh|batв качестве параметра, например:./ignite.sh ../examples/config/example-ignite.xml `После запуска узла появится следующий вывод:
[08:53:45] Ignite node started OK (id=7b30bc8e) [08:53:45] Topology snapshot [ver=1, locNode=7b30bc8e, servers=1, clients=0, state=ACTIVE, CPUs=4, offheap=1.6GB, heap=2.0GB]Откройте новое окно командной строки и снова запустите команду из пункта 2 данной инструкции.
Проверьте, что в выводе есть строка
Topology snapshot:[08:54:34] Ignite node started OK (id=3a30b7a4) [08:54:34] Topology snapshot [ver=2, locNode=3a30b7a4, servers=2, clients=0, state=ACTIVE, CPUs=4, offheap=3.2GB, heap=4.0GB]
По умолчанию ignite.sh|bat запускает узел с помощью стандартного конфигурационного файла config/default-config.xml.
Запуск первого приложения#
После запуска кластера выполните шаги ниже, чтобы запустить пример HelloWorld.
Шаг 1. Добавление зависимостей DataGrid#
Добавить зависимости DataGrid можно двумя способами.
Maven#
Внимание
Этот способ будет работать, только если в локальном Sonatype Nexus или другом репозитории зависимостей уже добавлены библиотеки
com.sbt.ignite:ignite-coreиcom.sbt.ignite:ignite-spring. В противном случае добавьте зависимости вручную.
Самый простой способ начать работу с DataGrid на Java — использовать управление зависимостями через Maven.
Создайте новый проект Maven с помощью любой IDE и добавьте в файл pom.xml проекта следующие зависимости:
<properties>
<ignite.se.version>16.1.0</ignite.se.version>
</properties>
<dependencies>
<dependency>
<groupId>com.sbt.ignite</groupId>
<artifactId>ignite-core</artifactId>
<version>${ignite.se.version}</version>
</dependency>
<dependency>
<groupId>com.sbt.ignite</groupId>
<artifactId>ignite-spring</artifactId>
<version>${ignite.se.version}</version>
</dependency>
</dependencies>
Добавление зависимостей вручную#
Найдите в архиве с дистрибутивом DataGrid два файла: libs/ignite-core-<версия_DataGrid>.jar и libs/ignite-spring/ignite-spring-<версия_DataGrid>.jar. Распакуйте их в любую папку и добавьте путь к этим файлам в classpath при запуске примера из следующего шага.
Шаг 2. HelloWorld.java#
Ниже приведен пример файла HelloWord.java, который выводит запись Hello World и другие детали окружения на всех серверных узлах кластера. Пример показывает, как подготовить конфигурацию клиента DataGrid с помощью Java API, создать кеш с данными и выполнить пользовательскую Java-логику на серверных узлах кластера.
public class HelloWorld {
public static void main(String[] args) throws IgniteException {
// Подготовка `IgniteConfiguration` с помощью Java APIs.
IgniteConfiguration cfg = new IgniteConfiguration();
// Узел запустится как клиентский.
cfg.setClientMode(true);
// Классы пользовательской Java-логики будут передаваться по сети из этого приложения.
cfg.setPeerClassLoadingEnabled(true);
// Настройка IP Finder (чтобы клиент мог найти серверные узлы).
cfg.setDiscoverySpi(new TcpDiscoverySpi().setIpFinder(new TcpDiscoveryVmIpFinder()
.setAddresses(Collections.singletonList("xxx.x.x.x:47500..47509"))));
// Запуск узла.
Ignite ignite = Ignition.start(cfg);
// Создайте `IgniteCache` и поместите в него данные.
IgniteCache<Integer, String> cache = ignite.getOrCreateCache("myCache");
cache.put(1, "Hello");
cache.put(2, "World!");
System.out.println(">> Created the cache and add the values.");
// Выполните пользовательские вычислительные задачи Java на серверных узлах.
ignite.compute(ignite.cluster().forServers()).broadcast(new RemoteTask());
System.out.println(">> Compute task is executed, check for output on the server nodes.");
// Отключитесь от кластера.
ignite.close();
}
/**
* Вычислительные задачи, которые выводят идентификатор узла и некоторые сведения о его операционной системе и JRE (Java Runtime Environment).
* Также в коде показано, как получить доступ к хранящимся в кеше данным из вычислительной задачи.
*/
private static class RemoteTask implements IgniteRunnable {
@IgniteInstanceResource
Ignite ignite;
@Override public void run() {
System.out.println(">> Executing the compute task");
System.out.println(
" Node ID: " + ignite.cluster().localNode().id() + "\n" +
" OS: " + System.getProperty("os.name") +
" JRE: " + System.getProperty("java.runtime.name"));
IgniteCache<Integer, String> cache = ignite.cache("myCache");
System.out.println(">> " + cache.get(1) + " " + cache.get(2));
}
}
}
Настройка JVM#
C релиза версии 16.0.0 DataGrid запускается только на Java 11 и новее.
Чтобы запустить DataGrid, установите переменную окружения JAVA_HOME и укажите в ней каталог установки Java.
DataGrid использует проприетарное Java SDK API, которое недоступно по умолчанию. Чтобы сделать его доступным, передайте указанные ниже флаги в JVM.
Если запускаете сценарий ignite.sh|bat, дополнительно ничего делать не нужно: в нем уже настроены флаги. В остальных случаях предоставьте следующие параметры для JVM приложения:
--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED
--add-exports=java.base/sun.nio.ch=ALL-UNNAMED
--add-exports=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED
--add-exports=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED
--add-exports=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED
--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED
--illegal-access=permit
--add-opens=java.base/jdk.internal.access=ALL-UNNAMED
--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED
--add-opens=java.base/sun.nio.ch=ALL-UNNAMED
--add-opens=java.base/sun.util.calendar=ALL-UNNAMED
--add-opens=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED
--add-opens=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED
--add-opens=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED
--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED
--add-opens=java.base/java.io=ALL-UNNAMED
--add-opens=java.base/java.nio=ALL-UNNAMED
--add-opens=java.base/java.net=ALL-UNNAMED
--add-opens=java.base/java.util=ALL-UNNAMED
--add-opens=java.base/java.util.concurrent=ALL-UNNAMED
--add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED
--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED
--add-opens=java.base/java.lang=ALL-UNNAMED
--add-opens=java.base/java.lang.invoke=ALL-UNNAMED
--add-opens=java.base/java.math=ALL-UNNAMED
--add-opens=java.sql/java.sql=ALL-UNNAMED
--add-opens=java.base/java.lang.reflect=ALL-UNNAMED
--add-opens=java.base/java.time=ALL-UNNAMED
--add-opens=java.base/java.text=ALL-UNNAMED
--add-opens=java.management/sun.management=ALL-UNNAMED
--add-opens java.desktop/java.awt.font=ALL-UNNAMED
SQL#
Если требуется просто запустить кластер и добавить строки с данными без запуска Java и настройки IDE, можно использовать SQL.
Чтобы сделать это, используйте утилиту sqlline.sh|bat, которая находится в папке bin установочной директории DataGrid.
Использование утилиты SQLline#
Утилита sqlline.sh|bat позволяет подключиться к узлу и начать вводить строки данных:
Откройте новое окно командной строки и проверьте, что находитесь в директории
$IGNITE_HOME. Если это не так, настройте переменную — выполните в терминале команду:export IGNITE_HOME=path/to/igniteПодключитесь к кластеру с помощью утилиты SQLLine:
./bin/sqlline.sh -u "jdbc:ignite:thin://xxx.x.x.x/"Введите название учетной записи клиента. Начальные учетные данные приводятся в подразделе «Начальные учетные данные» раздела «Сценарии администрирования» документа «Руководство по системному администрированию».
Создайте две таблицы. Для этого запустите две команды в утилите SQLLine.
SQL#CREATE TABLE City (id LONG PRIMARY KEY, name VARCHAR) WITH "template=replicated"; CREATE TABLE Person (id LONG, name VARCHAR, city_id LONG, PRIMARY KEY (id, city_id)) WITH "backups=1, affinityKey=city_id";Cкопируйте и вставьте команды.
SQL#INSERT INTO City (id, name) VALUES (1, 'Forest Hill'); INSERT INTO City (id, name) VALUES (2, 'Denver'); INSERT INTO City (id, name) VALUES (3, 'St. Petersburg'); INSERT INTO Person (id, name, city_id) VALUES (1, 'John Doe', 3); INSERT INTO Person (id, name, city_id) VALUES (2, 'Jane Roe', 2); INSERT INTO Person (id, name, city_id) VALUES (3, 'Mary Major', 1); INSERT INTO Person (id, name, city_id) VALUES (4, 'Richard Miles', 2);Запустите базовые запросы. Пример запроса с выводом:
SQL#SELECT * FROM City; +--------------------------------+--------------------------------+ | ID | NAME | +--------------------------------+--------------------------------+ | 1 | Forest Hill | | 2 | Denver | | 3 | St. Petersburg | +--------------------------------+--------------------------------+ 3 rows selected (0.05 seconds)Примечание
Запрос
SELECTпроверяет, создана ли таблица.Запустите запросы с распределенными
JOIN. Пример запроса с выводом:SQL#SELECT p.name, c.name FROM Person p, City c WHERE p.city_id = c.id; +--------------------------------+--------------------------------+ | NAME | NAME | +--------------------------------+--------------------------------+ | Mary Major | Forest Hill | | Jane Roe | Denver | | John Doe | St. Petersburg | | Richard Miles | Denver | +--------------------------------+--------------------------------+ 4 rows selected (0.011 seconds)Примечание
При создании каждой новой таблицы для нее одновременно создается отдельный кеш. Таблица физически сохраняется на диске в отдельном каталоге с ее названием.