Кассандра-стресс файл не найден, исключение - PullRequest
0 голосов
/ 11 мая 2019

Я пытаюсь запустить cassandra-strees с определенным собственным файлом .yaml, но все равно получаю сообщение об ошибке:

java.io.IOError: java.io.FileNotFoundException: /home/kenik/Documents/stress.yaml (No such file or directory)

Что очень неприятно для меня. Позвольте мне объяснить, почему.

Прежде всего, мой файлress.yaml:

# Keyspace name and create CQL
#

CREATE KEYSPACE weatherteller
WITH REPLICATION = { 
    'class' : 'SimpleStrategy',
    'datacenter1' : 1
};
#
# Table name and create CQL
#
table: weather
table_definition:
  CREATE TABLE weatherteller.weather (
        weatherid bigint,
        measurementdate timestamp,
        summary varchar,
        preciptype varchar,
        temperature double,
        apparenttemperature double, 
        humidity double,
        windspeed double,
        windbearing double,
        visibility double,
        pressure double,
        dailysummary varchar,
        city varchar,
        PRIMARY KEY (weatherid, measurementdate, city)
   )
#
columnspec:
  - name: weatherid
    size: uniform(1..64)
  - name: measurementdate
    cluster: uniform(20...40)
  - name: summary
    size: gaussian(100...500)
  - name: preciptype
    size: uniform(1..32)
  - name: temperature
    size: uniform(1..32)
  - name: apparenttemperature
    size: uniform(1..32)
  - name: humidity
    size: uniform(1..10)
  - name: windspeed
    size: uniform(1..10)
  - name: windbearing
    size: uniform(1..10)
  - name: visibility
    size: uniform(1..10)
  - name: pressure
    size: uniform(1..10)  
  - name: dailysummary
    size: uniform(1..100)  
  - name: city
    size: uniform(1..100)  


insert:
  partitions: fixed(1)
  select: fixed(1)/500 
  batchtype: UNLOGGED

queries:
  weather:
    cql: select * from weather where weatherid = ? and measurementdate = ? and city = ?
    fields: samerow

Команда, запущенная мной:

docker exec -it cassandra cassandra-stress user profile=file:///home/kenik/Documents/stress.yaml no-warmup ops\(insert=1,weather=1\) n=10000 -graph file=./stress.html

'Кассандра' - мой контейнер, который в данный момент работает.

Абсолютный путь к stress.yaml файлу /home/kenik/Documents/stress.yaml Я проверил это с помощью команды: readlink -f stress.yaml. Я в каталоге, где находится файл Stress.yaml. Как вы видите, путь, кажется, в порядке, но стресс Кассандры все равно не может его найти.

Знаете ли вы, как выполнить этот стресс-тест на кассандру?

// ОБНОВЛЕНИЕ При запуске контейнера я использую команду:

docker run -e DS_LICENSE=accept -e CASSANDRA_CLUSTER_NAME=MyCluster -e CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch -e CASSANDRA_DC=datacenter1 -v /home/kenik/Documents/dir -p 9042:9042 --name cassandra -m 2g -d modified-cassandra

или

docker run -e DS_LICENSE=accept -e CASSANDRA_CLUSTER_NAME=MyCluster -e CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch -e CASSANDRA_DC=datacenter1 -v /home/kenik/Documents/:/dir -p 9042:9042 --name cassandra -m 2g -d modified-cassandra

и пытается выполнить тест:

docker exec -it cassandra cassandra-stress user profile=file:///dir/stress.yaml ops\(insert=1\) n=10000 -graph file=stress.html

Результат тот же: исключение файла не найдено. Я обновил сообщение, потому что я должен был набрать какой-то текст или неправильно понял ответ.

1 Ответ

0 голосов
/ 11 мая 2019

Вы запускаете его через Docker, и процессы из образа Docker не имеют доступа к вашей файловой системе, пока вы не смонтируете его явно.Вам нужно смонтировать каталог в Docker, когда вы запускаете образ, используя -v командный переключатель docker run, а затем обращаться к нему из docker exec, например:

docker run ... -v /home/kenik/Documents/:/somedir ...
docker exec ... profile=file:///somedir/stress.yaml

. Вы можетеПодробнее о томах в документации Docker .

Обновление: здесь полностью рабочее решение:

docker run -v /var/tmp/123/:/data/ --name stress-test cassandra
sudo cp sales-stress-exampl.yaml /var/tmp/123
docker exec -ti stress-test cassandra-stress user \
  profile=file:///data/sales-stress-exampl.yaml \
  ops\(insert=3,read1=1\) no-warmup
...