SlideShare a Scribd company logo
1 of 39
Download to read offline
Особенности HBase
• Распределенная база данных:
– Работает на кластере серверов
– Легко горизонтально маштабируется
• NoSQL база данных:
– Не предоставляет SQL-доступ
– Не предоставляет реляционной модели
Особенности HBase
• Column-Oriented хранилище данных
– нет фиксированной структуры колонок
– произвольное число колонок для ключа
• Спроектирована для поддержки больших
таблиц
– Миллиарды строк и миллионы колонок
• Поддержка произвольных операций
чтения/записи
Особенности HBase
• Основана на идеях Google BigTable
– http://labs.google.com/papers/bigtable.html
• BigTable поверх GFS => HBase поверх HDFS
• Масштабируемость с помощью шардирования
• Автоматический fail-over
• Простой Java API
• Интеграция с MapReduce
Когда нужно использовать HBase
Больших объемов данных
 Для маленьких данных лучше использовать РБД
Паттерн доступа к данным:
 Выборка значений по заданному ключу
 Последовательный скан в диапазоне ключей
Когда нужно использовать HBase
Свободная схема данных
 Строки могу существенно отличаться по своей структуре
 В схеме может быть множество колонок и большинство
из них будет равно null
Когда НЕ нужно использовать HBase
Традиционный доступ к данным в стиле РБД
 Приложения с транзакциями
 Реляционная аналитика ('group by', 'join‘ и 'where column
like‘ и т.д.)
Плохо подходит для доступ к данным на основе текстовых
запросов (LIKE %text%)
Key CF1:C1 CF1:C2
Key CF1:C1
Key CF1:C1
Key CF1:C1
Key CF1:C1
Key CF1:C1
Key CF1:C1
Key CF1:C1 CF1:C2
Key CF1:C1
Key CF1:C1
Key CF1:C1
Key CF1:C1
Key CF1:C1
Key CF1:C1
Key CF1:C1 CF1:C2
Key CF1:C1
Key CF1:C1
Key CF1:C1
Key CF1:C1
Key CF1:C1
Key CF1:C1
Key CF1:C1 CF1:C2
1 Some text 7
2 10
3 For example 1234
4 Not empty
5 11
6 52
CF2:C1 CF2:C2
CF2:C1 CF2:C2
CF2:C1 CF2:C2
CF2:C1 CF2:C2
CF2:C1 CF2:C2
CF2:C1 CF2:C2
CF2:C1 CF2:C2
CF2:C1 CF2:C2
CF2:C1 CF2:C2
CF2:C1 CF2:C2
CF2:C1 CF2:C2
CF2:C1 CF2:C2
CF2:C1 CF2:C2
CF2:C1 CF2:C2
CF2:C1 CF2:C2
CF2:C1 CF2:C2
CF2:C1 CF2:C2
CF2:C1 CF2:C2
CF2:C1 CF2:C2
CF2:C1 CF2:C2
CF2:C1 CF2:C2
CF2:C1 CF2:C2
True
False
False
True
HBase Сolumn Families
Column Family описывает общие свойства колонок:
– Сжатие
– Количество версий данных
– Время жизни (Time To Live)
– Опция хранения только в памяти (In-memory)
– Хранится в отдельном файле (HFile/StoreFile)
HBase Сolumn Families
• Конфигурация CF статична
– Задается в процессе создания таблицы
– Количество CF ограничено небольшим числом
• Колонки наоборот НЕ статичны
– Создаются в runtime
– Могут быть сотни тысяч для одной CF
Table
Column Family 1
Col 1 -> Val 1
Column Family 2
Col 2 -> Val 4
Col 1 -> Val 3
Row 1
Row 2
Row 3
Col 1 -> Val 2
HBase Timestamps
• Ячейки имеют несколько версий данных
– Настраивается в конфигурации ColumnFamily
– По-умолчанию равно 3
• Данные имеют timestamp
– Задается неявно при записи
– Явно указывается клиентом
• Версии хранятся в убывающем порядке ts
– Последнее значение читается первым
Value = Table + RowKey + Family + Column + Timestamp
Row Key Timestamp CF: “Data” CF: “Meta”
Url Html Size Date Log
row1 t1 Mail.Ru Log text 1
t2 123456 Log text 2
t3 <html>… 1234 Log text 3
t4 <HTML>… 2345 Log text 4
row2 t1 OK.Ru 123765 Log text 1
t2 Log text 2
Архитектура HBase
Row1:ColumnFamily:column1:timestamp1:value1
Row1:ColumnFamily:column3:timestamp2:value3
Row2:ColumnFamily:column1:timestamp1:value4
Row3:ColumnFamily:column1:timestamp1:value1
Row3:ColumnFamily:column3:timestamp1:value6
HFile KeyValues
Key Column1 Column3 TimeStamp
Row1 value1 timestamp1
value2 timestamp2
Row2 value4 timestamp1
Row3 value1 value6 timestamp1
Маштабируемость в Hbase
• Таблица делится на регионы
• Регион – это группа строк, которые хранятся вместе
– Единица шардинга
– Динамически делится пополам, если становится большим
• RegionServer – демон, который управляет одним или
несколькими регионами
– Регион принадлежит только одному RS
• MasterServer (HMaster) – демон, который управляет
всеми RS
Hbase Regions
Регион – это диапазон ключей: [Start Key; Stop Key)
 Start Key включается в регион
 Stop Key не включается
 По-умолчанию есть только один регион
 Можно предварительно задать количество регионов
 При превышении лимита, регион разбивается на 2 части
Hbase Regions Split
Регионы более сбалансированы по размеру
Быстрое восстановление, если регион
повредился
Баланс нагрузки на RegionServer
Split – это быстрая операция
На больших инсталляциях лучше производить
в ручную
HBase Master
• Управляет регионами:
– Назначает регион на RegionServer
– Перебалансирует их для распределения нагрузки
– Восстанавливает регион, если он становится недоступен
• Не хранит данные
– Клиент взаимодействует напрямую с RS
– Обычно не сильно нагружен
• Отвечает за управление схемой таблиц и ее изменений
– Добавляет/удаляет таблицы и CF
Data Storage
Внесение изменений в данные
• В HDFS нельзя внести изменения в файл
– Нельзя удалить key-value из HFile
– Со временем становится много HFile’ов
• При удалении добавляется delete marker
– Маркеры используются для фильтрации
удаленных записей в runtime
Data Storage: compaction
• Minor Compaction
– Маленькие HFile’ы объединяются в бОльшие файлы
– Быстрая операция
– Маркеры удаления не применяются
• Major Compaction
– Для каждого региона все файлы в рамках одной CF
объединяются в один файл
– Используются маркеры удаления для того, чтобы не
включать удаленные записи
Доступ к HBase
• Основные способы:
– HBase Shell
– Native Java API
• Другие способы:
– Avro Server
– PyHBase
– REST Server
– Thrift
Запрос данных из HBase
• По RowId или набору RowIds
– Отдает только те строки, которые соответствуют заданным id
– Если не заданы дополнительные критерии, то отдаются все
cells из всех CF заданной таблицы
• Это означает слияние множества файлов из HDFS
• По ColumnFamily
– Уменьшает количество файлов для загрузки
• По Timestamp/Version
– Может пропускать полностью Hfile’ы, которые не содержат
данный диапазон timestamp’ов
Запрос данных из HBase
• По Column Name/Qualifier
– Уменьшает объем передаваемых данных
• По Value
– Можно пропускать ячейки используя фильтры
– Самый медленный критерий выбора данных
– Будет проверять каждую ячейку
• Фильтры могут применяться для каждого критерия выбора
– rows, families, columns, timestamps и values
• Можно использовать множественные критерии выбора данных
Cassandra
• Разработана в Facebook (с 2008 года)
• Следует модели Google BigTable
• Open-source проект Apache
http://cassandra.apache.org/
• Написана на Java
• Не имеет единой точки отказа
Особенности Cassandra
• Распределенная
• Поддерживает репликацию
• Маштабируема
• Устойчива к сбоям
• Консистентность в конечном счете
• Поддержка MapReduce Hadoop
• SQL-подобный язык доступа к данным
(CQL – Cassandra Query Language)
Типичный NoSQL API
• get(key)
• put(key, value)
• delete(key)
• execute(key, operation, parameters)
Data Model
• Column: наименьший элемент данных, пара
имя и значение
• ColumnFamily: структура для группировки
Columns
• Key: постоянное имя записи
• Keyspace: самый внешний уровень
организации данных (имя базы данных)
CREATE KEYSPACE MyKeySpace
WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 3 };
USE MyKeySpace;
CREATE COLUMNFAMILY MyColumns (id text, Last text, First text, PRIMARY
KEY(id));
INSERT INTO MyColumns (id, Last, First) VALUES ('1', 'Doe', 'John');
SELECT * FROM MyColumns;
id | first | last
----+-------+------
1 | John | Doe
(1 rows)
Column: key -> string
SuperColumn: key -> columns
Cassandra и Consistency
• Eventual consistency
• Cassandra имеет программируемый
read/writable consistency
Cassandra и Consistency
Read
– One: первая ответившая нода
– Quorum: ждем пока ответит большинство нод
– All: ждем ответа от всех нод
Cassandra и Consistency
Write
– Zero: Ничего не гарантируется
– Any: Гарантируется запись на одну ноду
– One: Гарантируется запись, в один commit log и в
memory table
– Quorum: Гарантируется запись на N/2 + 1 ноду
– All: Гарантируется, что запись дойдет до всех нод
A
H
D
B
M
V
S
R
C

More Related Content

What's hot

Introduction to Apache Spark
Introduction to Apache SparkIntroduction to Apache Spark
Introduction to Apache SparkRahul Jain
 
Introduction to YARN and MapReduce 2
Introduction to YARN and MapReduce 2Introduction to YARN and MapReduce 2
Introduction to YARN and MapReduce 2Cloudera, Inc.
 
How to understand and analyze Apache Hive query execution plan for performanc...
How to understand and analyze Apache Hive query execution plan for performanc...How to understand and analyze Apache Hive query execution plan for performanc...
How to understand and analyze Apache Hive query execution plan for performanc...DataWorks Summit/Hadoop Summit
 
What Is Apache Spark? | Introduction To Apache Spark | Apache Spark Tutorial ...
What Is Apache Spark? | Introduction To Apache Spark | Apache Spark Tutorial ...What Is Apache Spark? | Introduction To Apache Spark | Apache Spark Tutorial ...
What Is Apache Spark? | Introduction To Apache Spark | Apache Spark Tutorial ...Simplilearn
 
Apache Calcite: A Foundational Framework for Optimized Query Processing Over ...
Apache Calcite: A Foundational Framework for Optimized Query Processing Over ...Apache Calcite: A Foundational Framework for Optimized Query Processing Over ...
Apache Calcite: A Foundational Framework for Optimized Query Processing Over ...Julian Hyde
 
Analysing of big data using map reduce
Analysing of big data using map reduceAnalysing of big data using map reduce
Analysing of big data using map reducePaladion Networks
 
HDFS User Reference
HDFS User ReferenceHDFS User Reference
HDFS User ReferenceBiju Nair
 
Big Data Analytics with Hadoop
Big Data Analytics with HadoopBig Data Analytics with Hadoop
Big Data Analytics with HadoopPhilippe Julio
 
Hadoop And Their Ecosystem
 Hadoop And Their Ecosystem Hadoop And Their Ecosystem
Hadoop And Their Ecosystemsunera pathan
 
Apache Sqoop Tutorial | Sqoop: Import & Export Data From MySQL To HDFS | Hado...
Apache Sqoop Tutorial | Sqoop: Import & Export Data From MySQL To HDFS | Hado...Apache Sqoop Tutorial | Sqoop: Import & Export Data From MySQL To HDFS | Hado...
Apache Sqoop Tutorial | Sqoop: Import & Export Data From MySQL To HDFS | Hado...Edureka!
 
1 introduction databases and database users
1 introduction databases and database users1 introduction databases and database users
1 introduction databases and database usersKumar
 
Introduction to Map Reduce
Introduction to Map ReduceIntroduction to Map Reduce
Introduction to Map ReduceApache Apex
 
MongoDB: Advance concepts - Replication and Sharding
MongoDB: Advance concepts - Replication and ShardingMongoDB: Advance concepts - Replication and Sharding
MongoDB: Advance concepts - Replication and ShardingKnoldus Inc.
 
Introduction to Hadoop
Introduction to HadoopIntroduction to Hadoop
Introduction to Hadoopjoelcrabb
 

What's hot (20)

Data partitioning
Data partitioningData partitioning
Data partitioning
 
Mongo DB Presentation
Mongo DB PresentationMongo DB Presentation
Mongo DB Presentation
 
Intro to HBase
Intro to HBaseIntro to HBase
Intro to HBase
 
Introduction to Apache Spark
Introduction to Apache SparkIntroduction to Apache Spark
Introduction to Apache Spark
 
Introduction to YARN and MapReduce 2
Introduction to YARN and MapReduce 2Introduction to YARN and MapReduce 2
Introduction to YARN and MapReduce 2
 
How to understand and analyze Apache Hive query execution plan for performanc...
How to understand and analyze Apache Hive query execution plan for performanc...How to understand and analyze Apache Hive query execution plan for performanc...
How to understand and analyze Apache Hive query execution plan for performanc...
 
What Is Apache Spark? | Introduction To Apache Spark | Apache Spark Tutorial ...
What Is Apache Spark? | Introduction To Apache Spark | Apache Spark Tutorial ...What Is Apache Spark? | Introduction To Apache Spark | Apache Spark Tutorial ...
What Is Apache Spark? | Introduction To Apache Spark | Apache Spark Tutorial ...
 
Sqoop
SqoopSqoop
Sqoop
 
Apache Calcite: A Foundational Framework for Optimized Query Processing Over ...
Apache Calcite: A Foundational Framework for Optimized Query Processing Over ...Apache Calcite: A Foundational Framework for Optimized Query Processing Over ...
Apache Calcite: A Foundational Framework for Optimized Query Processing Over ...
 
Analysing of big data using map reduce
Analysing of big data using map reduceAnalysing of big data using map reduce
Analysing of big data using map reduce
 
HDFS User Reference
HDFS User ReferenceHDFS User Reference
HDFS User Reference
 
MongodB Internals
MongodB InternalsMongodB Internals
MongodB Internals
 
Big Data Analytics with Hadoop
Big Data Analytics with HadoopBig Data Analytics with Hadoop
Big Data Analytics with Hadoop
 
Hadoop And Their Ecosystem
 Hadoop And Their Ecosystem Hadoop And Their Ecosystem
Hadoop And Their Ecosystem
 
Apache Sqoop Tutorial | Sqoop: Import & Export Data From MySQL To HDFS | Hado...
Apache Sqoop Tutorial | Sqoop: Import & Export Data From MySQL To HDFS | Hado...Apache Sqoop Tutorial | Sqoop: Import & Export Data From MySQL To HDFS | Hado...
Apache Sqoop Tutorial | Sqoop: Import & Export Data From MySQL To HDFS | Hado...
 
Hadoop ecosystem
Hadoop ecosystemHadoop ecosystem
Hadoop ecosystem
 
1 introduction databases and database users
1 introduction databases and database users1 introduction databases and database users
1 introduction databases and database users
 
Introduction to Map Reduce
Introduction to Map ReduceIntroduction to Map Reduce
Introduction to Map Reduce
 
MongoDB: Advance concepts - Replication and Sharding
MongoDB: Advance concepts - Replication and ShardingMongoDB: Advance concepts - Replication and Sharding
MongoDB: Advance concepts - Replication and Sharding
 
Introduction to Hadoop
Introduction to HadoopIntroduction to Hadoop
Introduction to Hadoop
 

Similar to 12 - Hadoop. HBase и Cassandra

Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)Ontico
 
HighLoad systems: tips & tricks
HighLoad systems: tips & tricksHighLoad systems: tips & tricks
HighLoad systems: tips & tricksSveta Bozhko
 
Практика миграции реляционных баз данных в экосистему Hadoop
Практика миграции реляционных баз данных в экосистему HadoopПрактика миграции реляционных баз данных в экосистему Hadoop
Практика миграции реляционных баз данных в экосистему HadoopYury Petrov
 
Web весна 2012 лекция 6
Web весна 2012 лекция 6Web весна 2012 лекция 6
Web весна 2012 лекция 6Technopark
 
ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop Vladimir Klimontovich
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSTechnopark
 
02 - Hadoop. Архитектура HDFS
02 - Hadoop. Архитектура HDFS02 - Hadoop. Архитектура HDFS
02 - Hadoop. Архитектура HDFSRoman Brovko
 
Обзор архитектуры [файловой] системы Ceph
Обзор архитектуры [файловой] системы CephОбзор архитектуры [файловой] системы Ceph
Обзор архитектуры [файловой] системы CephOSLL
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"Technopark
 
СУБД осень 2012 лекция 9
СУБД осень 2012 лекция 9СУБД осень 2012 лекция 9
СУБД осень 2012 лекция 9Technopark
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_drupalconf
 
NoSQL thumbtack experience, Анатолий Никулин
NoSQL thumbtack experience, Анатолий НикулинNoSQL thumbtack experience, Анатолий Никулин
NoSQL thumbtack experience, Анатолий НикулинAnatoliy Nikulin
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ontico
 
Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)Olga Lavrentieva
 
High load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusHigh load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusVladd Ev
 
Максим Богук. Postgres-XC
Максим Богук. Postgres-XCМаксим Богук. Postgres-XC
Максим Богук. Postgres-XCPostgreSQL-Consulting
 
Максим Шапошников, Nutanix
Максим Шапошников, NutanixМаксим Шапошников, Nutanix
Максим Шапошников, NutanixOntico
 
Алексей Чумаков. Apache Cassandra на реальном проекте
Алексей Чумаков. Apache Cassandra на реальном проектеАлексей Чумаков. Apache Cassandra на реальном проекте
Алексей Чумаков. Apache Cassandra на реальном проектеVolha Banadyseva
 

Similar to 12 - Hadoop. HBase и Cassandra (20)

Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
Apache Cassandra. Ещё одно NoSQL хранилище (Владимир Климонтович)
 
HBase inside
HBase insideHBase inside
HBase inside
 
HighLoad systems: tips & tricks
HighLoad systems: tips & tricksHighLoad systems: tips & tricks
HighLoad systems: tips & tricks
 
Практика миграции реляционных баз данных в экосистему Hadoop
Практика миграции реляционных баз данных в экосистему HadoopПрактика миграции реляционных баз данных в экосистему Hadoop
Практика миграции реляционных баз данных в экосистему Hadoop
 
Web весна 2012 лекция 6
Web весна 2012 лекция 6Web весна 2012 лекция 6
Web весна 2012 лекция 6
 
ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop ADD2010: Обработка большого объема данных на платформеApache Hadoop
ADD2010: Обработка большого объема данных на платформеApache Hadoop
 
Лекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFSЛекция 3. Распределённая файловая система HDFS
Лекция 3. Распределённая файловая система HDFS
 
02 - Hadoop. Архитектура HDFS
02 - Hadoop. Архитектура HDFS02 - Hadoop. Архитектура HDFS
02 - Hadoop. Архитектура HDFS
 
Обзор архитектуры [файловой] системы Ceph
Обзор архитектуры [файловой] системы CephОбзор архитектуры [файловой] системы Ceph
Обзор архитектуры [файловой] системы Ceph
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"СУБД 2013 Лекция №8 "Конфигурирование базы данных"
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
 
СУБД осень 2012 лекция 9
СУБД осень 2012 лекция 9СУБД осень 2012 лекция 9
СУБД осень 2012 лекция 9
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
 
NoSQL thumbtack experience, Анатолий Никулин
NoSQL thumbtack experience, Анатолий НикулинNoSQL thumbtack experience, Анатолий Никулин
NoSQL thumbtack experience, Анатолий Никулин
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
 
Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)Опыт использования NoSQL-хранилищ (Андрей Новиков)
Опыт использования NoSQL-хранилищ (Андрей Новиков)
 
SECON.Посиделки #16: Cassandra (презентация)
SECON.Посиделки #16: Cassandra (презентация) SECON.Посиделки #16: Cassandra (презентация)
SECON.Посиделки #16: Cassandra (презентация)
 
High load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rusHigh load2007 scaling-web-applications-rus
High load2007 scaling-web-applications-rus
 
Максим Богук. Postgres-XC
Максим Богук. Postgres-XCМаксим Богук. Postgres-XC
Максим Богук. Postgres-XC
 
Максим Шапошников, Nutanix
Максим Шапошников, NutanixМаксим Шапошников, Nutanix
Максим Шапошников, Nutanix
 
Алексей Чумаков. Apache Cassandra на реальном проекте
Алексей Чумаков. Apache Cassandra на реальном проектеАлексей Чумаков. Apache Cassandra на реальном проекте
Алексей Чумаков. Apache Cassandra на реальном проекте
 

More from Roman Brovko

Individual task Networking
Individual task NetworkingIndividual task Networking
Individual task NetworkingRoman Brovko
 
Networking essentials lect3
Networking essentials lect3Networking essentials lect3
Networking essentials lect3Roman Brovko
 
Gl embedded starterkit_ethernet
Gl embedded starterkit_ethernetGl embedded starterkit_ethernet
Gl embedded starterkit_ethernetRoman Brovko
 
Networking essentials lect2
Networking essentials lect2Networking essentials lect2
Networking essentials lect2Roman Brovko
 
Networking essentials lect1
Networking essentials lect1Networking essentials lect1
Networking essentials lect1Roman Brovko
 
Bare metal training_07_spi_flash
Bare metal training_07_spi_flashBare metal training_07_spi_flash
Bare metal training_07_spi_flashRoman Brovko
 
Bare metal training_06_I2C
Bare metal training_06_I2CBare metal training_06_I2C
Bare metal training_06_I2CRoman Brovko
 
Bare metal training_05_uart
Bare metal training_05_uartBare metal training_05_uart
Bare metal training_05_uartRoman Brovko
 
Bare metal training_04_adc_temp_sensor
Bare metal training_04_adc_temp_sensorBare metal training_04_adc_temp_sensor
Bare metal training_04_adc_temp_sensorRoman Brovko
 
Bare metal training_03_timers_pwm
Bare metal training_03_timers_pwmBare metal training_03_timers_pwm
Bare metal training_03_timers_pwmRoman Brovko
 
Bare metal training_02_le_ds_and_buttons
Bare metal training_02_le_ds_and_buttonsBare metal training_02_le_ds_and_buttons
Bare metal training_02_le_ds_and_buttonsRoman Brovko
 
Bare metal training_01_hello_world
Bare metal training_01_hello_worldBare metal training_01_hello_world
Bare metal training_01_hello_worldRoman Brovko
 
Bare metal training_00_prerequisites
Bare metal training_00_prerequisitesBare metal training_00_prerequisites
Bare metal training_00_prerequisitesRoman Brovko
 
C language lect_23_advanced
C language lect_23_advancedC language lect_23_advanced
C language lect_23_advancedRoman Brovko
 
C language lect_22_advanced
C language lect_22_advancedC language lect_22_advanced
C language lect_22_advancedRoman Brovko
 
C language lect_21_advanced
C language lect_21_advancedC language lect_21_advanced
C language lect_21_advancedRoman Brovko
 
подготовка рабочего окружения
подготовка рабочего окруженияподготовка рабочего окружения
подготовка рабочего окруженияRoman Brovko
 
C language lect_20_advanced
C language lect_20_advancedC language lect_20_advanced
C language lect_20_advancedRoman Brovko
 
C language lect_19_basics
C language lect_19_basicsC language lect_19_basics
C language lect_19_basicsRoman Brovko
 

More from Roman Brovko (20)

Individual task Networking
Individual task NetworkingIndividual task Networking
Individual task Networking
 
Networking essentials lect3
Networking essentials lect3Networking essentials lect3
Networking essentials lect3
 
Gl embedded starterkit_ethernet
Gl embedded starterkit_ethernetGl embedded starterkit_ethernet
Gl embedded starterkit_ethernet
 
Networking essentials lect2
Networking essentials lect2Networking essentials lect2
Networking essentials lect2
 
Networking essentials lect1
Networking essentials lect1Networking essentials lect1
Networking essentials lect1
 
Bare metal training_07_spi_flash
Bare metal training_07_spi_flashBare metal training_07_spi_flash
Bare metal training_07_spi_flash
 
Bare metal training_06_I2C
Bare metal training_06_I2CBare metal training_06_I2C
Bare metal training_06_I2C
 
Glesk worshop
Glesk worshopGlesk worshop
Glesk worshop
 
Bare metal training_05_uart
Bare metal training_05_uartBare metal training_05_uart
Bare metal training_05_uart
 
Bare metal training_04_adc_temp_sensor
Bare metal training_04_adc_temp_sensorBare metal training_04_adc_temp_sensor
Bare metal training_04_adc_temp_sensor
 
Bare metal training_03_timers_pwm
Bare metal training_03_timers_pwmBare metal training_03_timers_pwm
Bare metal training_03_timers_pwm
 
Bare metal training_02_le_ds_and_buttons
Bare metal training_02_le_ds_and_buttonsBare metal training_02_le_ds_and_buttons
Bare metal training_02_le_ds_and_buttons
 
Bare metal training_01_hello_world
Bare metal training_01_hello_worldBare metal training_01_hello_world
Bare metal training_01_hello_world
 
Bare metal training_00_prerequisites
Bare metal training_00_prerequisitesBare metal training_00_prerequisites
Bare metal training_00_prerequisites
 
C language lect_23_advanced
C language lect_23_advancedC language lect_23_advanced
C language lect_23_advanced
 
C language lect_22_advanced
C language lect_22_advancedC language lect_22_advanced
C language lect_22_advanced
 
C language lect_21_advanced
C language lect_21_advancedC language lect_21_advanced
C language lect_21_advanced
 
подготовка рабочего окружения
подготовка рабочего окруженияподготовка рабочего окружения
подготовка рабочего окружения
 
C language lect_20_advanced
C language lect_20_advancedC language lect_20_advanced
C language lect_20_advanced
 
C language lect_19_basics
C language lect_19_basicsC language lect_19_basics
C language lect_19_basics
 

12 - Hadoop. HBase и Cassandra

  • 1.
  • 2. Особенности HBase • Распределенная база данных: – Работает на кластере серверов – Легко горизонтально маштабируется • NoSQL база данных: – Не предоставляет SQL-доступ – Не предоставляет реляционной модели
  • 3. Особенности HBase • Column-Oriented хранилище данных – нет фиксированной структуры колонок – произвольное число колонок для ключа • Спроектирована для поддержки больших таблиц – Миллиарды строк и миллионы колонок • Поддержка произвольных операций чтения/записи
  • 4. Особенности HBase • Основана на идеях Google BigTable – http://labs.google.com/papers/bigtable.html • BigTable поверх GFS => HBase поверх HDFS • Масштабируемость с помощью шардирования • Автоматический fail-over • Простой Java API • Интеграция с MapReduce
  • 5. Когда нужно использовать HBase Больших объемов данных  Для маленьких данных лучше использовать РБД Паттерн доступа к данным:  Выборка значений по заданному ключу  Последовательный скан в диапазоне ключей
  • 6. Когда нужно использовать HBase Свободная схема данных  Строки могу существенно отличаться по своей структуре  В схеме может быть множество колонок и большинство из них будет равно null
  • 7. Когда НЕ нужно использовать HBase Традиционный доступ к данным в стиле РБД  Приложения с транзакциями  Реляционная аналитика ('group by', 'join‘ и 'where column like‘ и т.д.) Плохо подходит для доступ к данным на основе текстовых запросов (LIKE %text%)
  • 8. Key CF1:C1 CF1:C2 Key CF1:C1 Key CF1:C1 Key CF1:C1 Key CF1:C1 Key CF1:C1 Key CF1:C1 Key CF1:C1 CF1:C2 Key CF1:C1 Key CF1:C1 Key CF1:C1 Key CF1:C1 Key CF1:C1 Key CF1:C1 Key CF1:C1 CF1:C2 Key CF1:C1 Key CF1:C1 Key CF1:C1 Key CF1:C1 Key CF1:C1 Key CF1:C1 Key CF1:C1 CF1:C2 1 Some text 7 2 10 3 For example 1234 4 Not empty 5 11 6 52 CF2:C1 CF2:C2 CF2:C1 CF2:C2 CF2:C1 CF2:C2 CF2:C1 CF2:C2 CF2:C1 CF2:C2 CF2:C1 CF2:C2 CF2:C1 CF2:C2 CF2:C1 CF2:C2 CF2:C1 CF2:C2 CF2:C1 CF2:C2 CF2:C1 CF2:C2 CF2:C1 CF2:C2 CF2:C1 CF2:C2 CF2:C1 CF2:C2 CF2:C1 CF2:C2 CF2:C1 CF2:C2 CF2:C1 CF2:C2 CF2:C1 CF2:C2 CF2:C1 CF2:C2 CF2:C1 CF2:C2 CF2:C1 CF2:C2 CF2:C1 CF2:C2 True False False True
  • 9. HBase Сolumn Families Column Family описывает общие свойства колонок: – Сжатие – Количество версий данных – Время жизни (Time To Live) – Опция хранения только в памяти (In-memory) – Хранится в отдельном файле (HFile/StoreFile)
  • 10. HBase Сolumn Families • Конфигурация CF статична – Задается в процессе создания таблицы – Количество CF ограничено небольшим числом • Колонки наоборот НЕ статичны – Создаются в runtime – Могут быть сотни тысяч для одной CF
  • 11. Table Column Family 1 Col 1 -> Val 1 Column Family 2 Col 2 -> Val 4 Col 1 -> Val 3 Row 1 Row 2 Row 3 Col 1 -> Val 2
  • 12. HBase Timestamps • Ячейки имеют несколько версий данных – Настраивается в конфигурации ColumnFamily – По-умолчанию равно 3 • Данные имеют timestamp – Задается неявно при записи – Явно указывается клиентом • Версии хранятся в убывающем порядке ts – Последнее значение читается первым
  • 13. Value = Table + RowKey + Family + Column + Timestamp
  • 14. Row Key Timestamp CF: “Data” CF: “Meta” Url Html Size Date Log row1 t1 Mail.Ru Log text 1 t2 123456 Log text 2 t3 <html>… 1234 Log text 3 t4 <HTML>… 2345 Log text 4 row2 t1 OK.Ru 123765 Log text 1 t2 Log text 2
  • 17. Маштабируемость в Hbase • Таблица делится на регионы • Регион – это группа строк, которые хранятся вместе – Единица шардинга – Динамически делится пополам, если становится большим • RegionServer – демон, который управляет одним или несколькими регионами – Регион принадлежит только одному RS • MasterServer (HMaster) – демон, который управляет всеми RS
  • 18.
  • 19. Hbase Regions Регион – это диапазон ключей: [Start Key; Stop Key)  Start Key включается в регион  Stop Key не включается  По-умолчанию есть только один регион  Можно предварительно задать количество регионов  При превышении лимита, регион разбивается на 2 части
  • 20. Hbase Regions Split Регионы более сбалансированы по размеру Быстрое восстановление, если регион повредился Баланс нагрузки на RegionServer Split – это быстрая операция На больших инсталляциях лучше производить в ручную
  • 21.
  • 22. HBase Master • Управляет регионами: – Назначает регион на RegionServer – Перебалансирует их для распределения нагрузки – Восстанавливает регион, если он становится недоступен • Не хранит данные – Клиент взаимодействует напрямую с RS – Обычно не сильно нагружен • Отвечает за управление схемой таблиц и ее изменений – Добавляет/удаляет таблицы и CF
  • 24. Внесение изменений в данные • В HDFS нельзя внести изменения в файл – Нельзя удалить key-value из HFile – Со временем становится много HFile’ов • При удалении добавляется delete marker – Маркеры используются для фильтрации удаленных записей в runtime
  • 25. Data Storage: compaction • Minor Compaction – Маленькие HFile’ы объединяются в бОльшие файлы – Быстрая операция – Маркеры удаления не применяются • Major Compaction – Для каждого региона все файлы в рамках одной CF объединяются в один файл – Используются маркеры удаления для того, чтобы не включать удаленные записи
  • 26. Доступ к HBase • Основные способы: – HBase Shell – Native Java API • Другие способы: – Avro Server – PyHBase – REST Server – Thrift
  • 27. Запрос данных из HBase • По RowId или набору RowIds – Отдает только те строки, которые соответствуют заданным id – Если не заданы дополнительные критерии, то отдаются все cells из всех CF заданной таблицы • Это означает слияние множества файлов из HDFS • По ColumnFamily – Уменьшает количество файлов для загрузки • По Timestamp/Version – Может пропускать полностью Hfile’ы, которые не содержат данный диапазон timestamp’ов
  • 28. Запрос данных из HBase • По Column Name/Qualifier – Уменьшает объем передаваемых данных • По Value – Можно пропускать ячейки используя фильтры – Самый медленный критерий выбора данных – Будет проверять каждую ячейку • Фильтры могут применяться для каждого критерия выбора – rows, families, columns, timestamps и values • Можно использовать множественные критерии выбора данных
  • 29.
  • 30. Cassandra • Разработана в Facebook (с 2008 года) • Следует модели Google BigTable • Open-source проект Apache http://cassandra.apache.org/ • Написана на Java • Не имеет единой точки отказа
  • 31. Особенности Cassandra • Распределенная • Поддерживает репликацию • Маштабируема • Устойчива к сбоям • Консистентность в конечном счете • Поддержка MapReduce Hadoop • SQL-подобный язык доступа к данным (CQL – Cassandra Query Language)
  • 32. Типичный NoSQL API • get(key) • put(key, value) • delete(key) • execute(key, operation, parameters)
  • 33. Data Model • Column: наименьший элемент данных, пара имя и значение • ColumnFamily: структура для группировки Columns • Key: постоянное имя записи • Keyspace: самый внешний уровень организации данных (имя базы данных)
  • 34. CREATE KEYSPACE MyKeySpace WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 3 }; USE MyKeySpace; CREATE COLUMNFAMILY MyColumns (id text, Last text, First text, PRIMARY KEY(id)); INSERT INTO MyColumns (id, Last, First) VALUES ('1', 'Doe', 'John'); SELECT * FROM MyColumns; id | first | last ----+-------+------ 1 | John | Doe (1 rows)
  • 35. Column: key -> string SuperColumn: key -> columns
  • 36. Cassandra и Consistency • Eventual consistency • Cassandra имеет программируемый read/writable consistency
  • 37. Cassandra и Consistency Read – One: первая ответившая нода – Quorum: ждем пока ответит большинство нод – All: ждем ответа от всех нод
  • 38. Cassandra и Consistency Write – Zero: Ничего не гарантируется – Any: Гарантируется запись на одну ноду – One: Гарантируется запись, в один commit log и в memory table – Quorum: Гарантируется запись на N/2 + 1 ноду – All: Гарантируется, что запись дойдет до всех нод