Команда разделения в оболочке HBase
Я пытаюсь запустить YCSB на HBase с посылкой CDH YCSB. Я слежу за блогом Cloudera http://blog.cloudera.com/blog/2015/08/ycsb-the-open-standard-for-nosql-benchmarking-joins-cloudera-labs/. В этом блоге я вижу следующую команду:
hbase(main):001:0> n_splits = 200 # HBase recommends (10 * number of regionservers)
hbase(main):002:0> create 'usertable', 'cf', {SPLITS => (1..n_splits).map {|i| "user#{1000+i*(9999-1000)/n_splits}"}}
,
что делает это {SPLITS => (1..n_splits).map {|i| "user#{1000+i*(9999-1000)/n_splits}"}
имею в виду? Я понимаю, что это используется для разделения регионов. Но я не могу найти, что на самом деле делает вышеуказанная команда? Пожалуйста, помогите мне лучше понять это.
0 ответов
Как вы уже упоминали, команда предварительно разбивает таблицу на регионы. Это рекомендуется для YCSB, потому что тест производительности загружает много данных, которые попадают на сервер в одном регионе и в конечном итоге не будут оценены, поскольку данные не будут распределены по кластеру.
Идеальное количество разделений зависит от других факторов. Я не уверен, почему они выбрали эту формулу, но я предполагаю, что это из-за примеров рабочей нагрузки.
Вы также можете запустить команду в онлайн-инструменте Ruby и самостоятельно проверить результаты:
user1044
user1089
user1134
user1179
...
user9999
Это рубиновая вещь, как указано здесь http://hbase.apache.org/book.html
Оболочка Apache HBase - это (J)Ruby IRB с добавленными некоторыми командами HBase. Все, что вы можете делать в IRB, вы должны уметь делать в HBase Shell.
Итак, вы сначала объявляете числовую переменную разделения
hbase(main):001:0> n_splits = 200 # HBase recommends (10 * number of regionservers)
Затем используйте синтаксис ruby для создания массива в качестве параметра SPLITS команды create.
hbase(main):002:0> create 'usertable', 'cf', {SPLITS => (1..n_splits).map {|i| "user#{1000+i*(9999-1000)/n_splits}"}}
Даже сама команда create - это функция Ruby. вы можете найти определения в $HBASE_HOME/lib/ruby / shell / commands