This document summarizes a thesis submitted by Sathvik Katam to the Faculty of Computing at Blekinge Institute of Technology in partial fulfillment of the requirements for a Masters degree in telecommunication systems. The thesis investigates the performance tuning of the Apache Cassandra NoSQL database platform when deployed on Amazon Web Services (AWS). Specifically, it evaluates the performance of a three node Cassandra cluster on AWS and tests how changing various Cassandra configuration parameters impacts read and write performance metrics. The results are then used to develop a draft performance-tuned model which is compared to the default Cassandra configuration. Key parameters investigated include key cache size, memtable thresholds, and heap memory allocation.
Cassandra training course is designed to provide knowledge and skills to become a successful Cassandra developer. In depth knowledge of concepts such as Clusters, Keyspaces, Column familes, Replication, Cassandra’s Data Model, Cassandra’s Architecture, Performance Tuning, How to read and write data and finally how to integrate Cassandra with Hadoop will be covered in this course.
Dataservices: Processing Big Data the Microservice WayQAware GmbH
O'Reilly Software Architecture Conference 2018, New York (USA): Talk by Mario-Leander Reimer (@LeanderReimer, Principal Software Architect at QAware)
Abstract:
Big data processing, microservices, and cloud-native technology are a match made in computing heaven, enabling microservices to be used to build a flexible, scalable, and distributed system of loosely coupled data processing tasks, called data services.
Mario-Leander Reimer explores key JEE technologies that can be used to build JEE-powered data services and walks you through implementing the individual data processing tasks of a simplified showcase application. You’ll then deploy and orchestrate the individual data services using OpenShift, illustrating the scalability of the overall processing pipeline. The context and content is taken from a real-world project for a major German car manufacturer, implementing a microservices-based processing pipeline that uses car-related event data (sensor data, traffic events, and other real-time data) for a traffic information management and route optimization system.
Performance Characterization of In-Memory Data Analytics on a Modern Cloud Se...Ahsan Javed Awan
In last decade, data analytics have rapidly progressed from traditional disk-based processing to modern in-memory processing. However, little effort has been devoted at enhancing performance at micro-architecture level. This paper characterizes the performance of in-memory data analytics using Apache Spark framework. We use a single node NUMA machine and identify the bottlenecks hampering the scalability of work-loads. We also quantify the inefficiencies at micro-architecture level for various data analysis workloads. Through empirical evaluation, we show that spark workloads do not scale linearly beyond twelve threads, due to work time inflation and thread level load imbalance. Further, at the micro-architecture level, we observe memory bound latency to be the major cause of worktime inflation.
Cassandra training course is designed to provide knowledge and skills to become a successful Cassandra developer. In depth knowledge of concepts such as Clusters, Keyspaces, Column familes, Replication, Cassandra’s Data Model, Cassandra’s Architecture, Performance Tuning, How to read and write data and finally how to integrate Cassandra with Hadoop will be covered in this course.
Dataservices: Processing Big Data the Microservice WayQAware GmbH
O'Reilly Software Architecture Conference 2018, New York (USA): Talk by Mario-Leander Reimer (@LeanderReimer, Principal Software Architect at QAware)
Abstract:
Big data processing, microservices, and cloud-native technology are a match made in computing heaven, enabling microservices to be used to build a flexible, scalable, and distributed system of loosely coupled data processing tasks, called data services.
Mario-Leander Reimer explores key JEE technologies that can be used to build JEE-powered data services and walks you through implementing the individual data processing tasks of a simplified showcase application. You’ll then deploy and orchestrate the individual data services using OpenShift, illustrating the scalability of the overall processing pipeline. The context and content is taken from a real-world project for a major German car manufacturer, implementing a microservices-based processing pipeline that uses car-related event data (sensor data, traffic events, and other real-time data) for a traffic information management and route optimization system.
Performance Characterization of In-Memory Data Analytics on a Modern Cloud Se...Ahsan Javed Awan
In last decade, data analytics have rapidly progressed from traditional disk-based processing to modern in-memory processing. However, little effort has been devoted at enhancing performance at micro-architecture level. This paper characterizes the performance of in-memory data analytics using Apache Spark framework. We use a single node NUMA machine and identify the bottlenecks hampering the scalability of work-loads. We also quantify the inefficiencies at micro-architecture level for various data analysis workloads. Through empirical evaluation, we show that spark workloads do not scale linearly beyond twelve threads, due to work time inflation and thread level load imbalance. Further, at the micro-architecture level, we observe memory bound latency to be the major cause of worktime inflation.
DataStax | Building a Spark Streaming App with DSE File System (Rocco Varela)...DataStax
In this talk, we review a real-world use case that tested the Cassandra+Spark stack on Datastax Enterprise (DSE). We also cover implementation details around application high availability and fault tolerance using the new DSE File System (DSEFS). From a field and testing perspective, we discuss the strategies we can leverage to meet our requirements. Such requirements include (but not limited to) functional coverage, system integration, usability, and performance. We will discuss best practices and lessons we learned covering everything from application development to DSE setup and tuning.
About the Speaker
Rocco Varela Software Engineer in Test, DataStax
After earning his PhD in bioinformatics from UCSF, Rocco Varela took his passion for technology to DataStax. At DataStax he works on several aspects of performance and test automation around DataStax Enterprise (DSE) integrated offerings such as Apache Spark, Hadoop, Solr, and more recently DSE Graph.
The talk by Maksud Ibrahimov, Chief Data Scientist at InfoReady Analytics. He is going to share with us how to maximise the performance of Spark.
As a user of Apache Spark from very early releases, he generally sees that the framework is easy to start with but as the program grows its performance starts to suffer. In this talk Maksud will answer the following questions:
- How to reach higher level of parallelism of your jobs without scaling up your cluster?
- Understanding shuffles, and how to avoid disk spills
- How to identify task stragglers and data skews?
- How to identify Spark bottlenecks?
Databases Have Forgotten About Single Node Performance, A Wrongheaded Trade OffTimescale
The earliest relational databases were monolithic on-premise systems that were powerful and full-featured. Fast forward to the Internet and NoSQL: BigTable, DynamoDB and Cassandra. These distributed systems were built to scale out for ballooning user bases and operations. As more and more companies vied to be the next Google, Amazon, or Facebook, they too "required" horizontal scalability.
But in a real way, NoSQL and even NewSQL have forgotten single node performance where scaling out isn't an option. And single node performance is important because it allows you to do more with much less. With a smaller footprint and simpler stack, overhead decreases and your application can still scale.
In this talk, we describe TimescaleDB's methods for single node performance. The nature of time-series workloads and how data is partitioned allows users to elastically scale up even on single machines, which provides operational ease and architectural simplicity, especially in cloud environments.
Featuring a brief overview of fault-tolerant mechanisms across various Big Data systems such as Google File system (GFS), Amazon Dynamo, Bigtable, Hadoop - Map Reduce, Facebook Cassandra along with description of an existing fault tolerant model
Pythian: My First 100 days with a Cassandra ClusterDataStax Academy
With Apache Cassandra being a massively scalable open source NoSQL database and with the amount of data that we create and copy annually which is doubling in size every two years, it is expected to reach 44 zettabytes, or 44 trillion gigabytes, we can assume that sooner or later a DBA will be handling a Cassandra database in their shop. This beginner/intermediate-level session will take you through my journey of an Oracle DBA and my first 100 days of starting to administer a Cassandra Cluster, show several demos and all the roadblocks and the success I had along this path.
Learn from Accubits Technologies
High Performance Computing (HPC) most generally refers to the practice of aggregating computing power in a way that delivers much higher performance than one could get out of a typical desktop computer or workstation in order to solve large problems in science, engineering, or business.
This presentation will investigate how using micro-batching for submitting writes to Cassandra can improve throughput and reduce client application CPU load.
Micro-batching combines writes for the same partition key into a single network request and ensures they hit the "fast path" for writes on a Cassandra node.
About the Speaker
Adam Zegelin Technical Co-founder, Instaclustr
As Instaclustrs founding software engineer, Adam provides the foundation knowledge of our capability and engineering environment. He delivers business-focused value to our code-base and overall capability architecture. Adam is also focused on providing Instaclustr's contribution to the broader open source community on which our products and services rely, including Apache Cassandra, Apache Spark and other technologies such as CoreOS and Docker.
Fault Tolerance in Big Data Processing Using Heartbeat Messages and Data Repl...IJSRD
Big data is a popular term used to define the exponential evolution and availability of data, includes both structured and unstructured data. The volatile progression of demands on big data processing imposes heavy burden on computation, communication and storage in geographically distributed data centers. Hence it is necessary to minimize the cost of big data processing, which also includes fault tolerance cost. Big Data processing involves two types of faults: node failure and data loss. Both the faults can be recovered using heartbeat messages. Here heartbeat messages acts as an acknowledgement messages between two servers. This paper depicts about the study of node failure and recovery, data replication and heartbeat messages.
We run multiple DataStax Enterprise clusters in Azure each holding 300 TB+ data to deeply understand Office 365 users. In this talk, we will deep dive into some of the key challenges and takeaways faced in running these clusters reliably over a year. To name a few: process crashes, ephemeral SSDs contributing to data loss, slow streaming between nodes, mutation drops, compaction strategy choices, schema updates when nodes are down and backup/restore. We will briefly talk about our contributions back to Cassandra, and our path forward using network attached disks offered via Azure premium storage.
About the Speaker
Anubhav Kale Sr. Software Engineer, Microsoft
Anubhav is a senior software engineer at Microsoft. His team is responsible for building big data platform using Cassandra, Spark and Azure to generate per-user insights of Office 365 users.
This presentation will recount the story of Macys.com (and Bloomingdales.com)'s selection and migration from legacy RDBMS to NoSQL Cassandra in partnership with DataStax.
We'll start with a mercifully brief backgrounder on our website and our business. Then we will go over the various technologies that we considered, as well as our use case-based performance benchmarks that led to the decision to go with Cassandra.
We'll cover the various schema options that we tried and how we settled on the current one. We'll show you a selection of some of our extensive performance tuning benchmarks.
One thing that differentiates this talk from others on Cassandra is Macy's philosophy of "doing more with less." You will see why we emphasize the performance tuning aspects of iterative development when you see how much processing we can support on relatively small configurations.
And, finally, we will wrap up with our "lessons learned" and a brief look at our future plans.
Optimizing Your Cluster with Coordinator Nodes (Eric Lubow, SimpleReach) | Ca...DataStax
With the addition of vnodes (Virtual Nodes), Cassandra users were able to gain a few benefits as a result of streaming when it came to bootstrapping and decommissioning nodes. On the flip side, having to route requests on larger clusters became a lot more intensive of a workload for all nodes that were then forced to act coordinator nodes. By setting up a tier of proxy nodes, we were able to have our cluster of 50 nodes perform with a 300% improvement on average in a mixed workload environment. This is an explanation of what we did, how we did it, and why it works.
About the Speaker
Eric Lubow CTO, SimpleReach
Eric Lubow is CTO of SimpleReach, where he builds highly-scalable distributed systems for processing analytics data. Eric is also a DataStax MVP for Cassandra, and co-author of Practical Cassandra. In his spare time, Eric is a skydiver, motorcycle rider, mixed martial artist, and dog dad.
"Cloudian’s new solution, Cloudian 2.4, maximizes data protection, availability and security, which are critical for enterprises looking to deploy their own private cloud or move their data to the public cloud. For multi-datacenter deployments, Cloudian now provides Dynamic Consistency Levels, offering unprecedented data protection and ensuring continuous, uninterrupted operations in the case of network or site failures. "
See more detail at Cloudian Press Release.
http://www.cloudian.com/news/press-releases/press-release-25.html
DataStax | Building a Spark Streaming App with DSE File System (Rocco Varela)...DataStax
In this talk, we review a real-world use case that tested the Cassandra+Spark stack on Datastax Enterprise (DSE). We also cover implementation details around application high availability and fault tolerance using the new DSE File System (DSEFS). From a field and testing perspective, we discuss the strategies we can leverage to meet our requirements. Such requirements include (but not limited to) functional coverage, system integration, usability, and performance. We will discuss best practices and lessons we learned covering everything from application development to DSE setup and tuning.
About the Speaker
Rocco Varela Software Engineer in Test, DataStax
After earning his PhD in bioinformatics from UCSF, Rocco Varela took his passion for technology to DataStax. At DataStax he works on several aspects of performance and test automation around DataStax Enterprise (DSE) integrated offerings such as Apache Spark, Hadoop, Solr, and more recently DSE Graph.
The talk by Maksud Ibrahimov, Chief Data Scientist at InfoReady Analytics. He is going to share with us how to maximise the performance of Spark.
As a user of Apache Spark from very early releases, he generally sees that the framework is easy to start with but as the program grows its performance starts to suffer. In this talk Maksud will answer the following questions:
- How to reach higher level of parallelism of your jobs without scaling up your cluster?
- Understanding shuffles, and how to avoid disk spills
- How to identify task stragglers and data skews?
- How to identify Spark bottlenecks?
Databases Have Forgotten About Single Node Performance, A Wrongheaded Trade OffTimescale
The earliest relational databases were monolithic on-premise systems that were powerful and full-featured. Fast forward to the Internet and NoSQL: BigTable, DynamoDB and Cassandra. These distributed systems were built to scale out for ballooning user bases and operations. As more and more companies vied to be the next Google, Amazon, or Facebook, they too "required" horizontal scalability.
But in a real way, NoSQL and even NewSQL have forgotten single node performance where scaling out isn't an option. And single node performance is important because it allows you to do more with much less. With a smaller footprint and simpler stack, overhead decreases and your application can still scale.
In this talk, we describe TimescaleDB's methods for single node performance. The nature of time-series workloads and how data is partitioned allows users to elastically scale up even on single machines, which provides operational ease and architectural simplicity, especially in cloud environments.
Featuring a brief overview of fault-tolerant mechanisms across various Big Data systems such as Google File system (GFS), Amazon Dynamo, Bigtable, Hadoop - Map Reduce, Facebook Cassandra along with description of an existing fault tolerant model
Pythian: My First 100 days with a Cassandra ClusterDataStax Academy
With Apache Cassandra being a massively scalable open source NoSQL database and with the amount of data that we create and copy annually which is doubling in size every two years, it is expected to reach 44 zettabytes, or 44 trillion gigabytes, we can assume that sooner or later a DBA will be handling a Cassandra database in their shop. This beginner/intermediate-level session will take you through my journey of an Oracle DBA and my first 100 days of starting to administer a Cassandra Cluster, show several demos and all the roadblocks and the success I had along this path.
Learn from Accubits Technologies
High Performance Computing (HPC) most generally refers to the practice of aggregating computing power in a way that delivers much higher performance than one could get out of a typical desktop computer or workstation in order to solve large problems in science, engineering, or business.
This presentation will investigate how using micro-batching for submitting writes to Cassandra can improve throughput and reduce client application CPU load.
Micro-batching combines writes for the same partition key into a single network request and ensures they hit the "fast path" for writes on a Cassandra node.
About the Speaker
Adam Zegelin Technical Co-founder, Instaclustr
As Instaclustrs founding software engineer, Adam provides the foundation knowledge of our capability and engineering environment. He delivers business-focused value to our code-base and overall capability architecture. Adam is also focused on providing Instaclustr's contribution to the broader open source community on which our products and services rely, including Apache Cassandra, Apache Spark and other technologies such as CoreOS and Docker.
Fault Tolerance in Big Data Processing Using Heartbeat Messages and Data Repl...IJSRD
Big data is a popular term used to define the exponential evolution and availability of data, includes both structured and unstructured data. The volatile progression of demands on big data processing imposes heavy burden on computation, communication and storage in geographically distributed data centers. Hence it is necessary to minimize the cost of big data processing, which also includes fault tolerance cost. Big Data processing involves two types of faults: node failure and data loss. Both the faults can be recovered using heartbeat messages. Here heartbeat messages acts as an acknowledgement messages between two servers. This paper depicts about the study of node failure and recovery, data replication and heartbeat messages.
We run multiple DataStax Enterprise clusters in Azure each holding 300 TB+ data to deeply understand Office 365 users. In this talk, we will deep dive into some of the key challenges and takeaways faced in running these clusters reliably over a year. To name a few: process crashes, ephemeral SSDs contributing to data loss, slow streaming between nodes, mutation drops, compaction strategy choices, schema updates when nodes are down and backup/restore. We will briefly talk about our contributions back to Cassandra, and our path forward using network attached disks offered via Azure premium storage.
About the Speaker
Anubhav Kale Sr. Software Engineer, Microsoft
Anubhav is a senior software engineer at Microsoft. His team is responsible for building big data platform using Cassandra, Spark and Azure to generate per-user insights of Office 365 users.
This presentation will recount the story of Macys.com (and Bloomingdales.com)'s selection and migration from legacy RDBMS to NoSQL Cassandra in partnership with DataStax.
We'll start with a mercifully brief backgrounder on our website and our business. Then we will go over the various technologies that we considered, as well as our use case-based performance benchmarks that led to the decision to go with Cassandra.
We'll cover the various schema options that we tried and how we settled on the current one. We'll show you a selection of some of our extensive performance tuning benchmarks.
One thing that differentiates this talk from others on Cassandra is Macy's philosophy of "doing more with less." You will see why we emphasize the performance tuning aspects of iterative development when you see how much processing we can support on relatively small configurations.
And, finally, we will wrap up with our "lessons learned" and a brief look at our future plans.
Optimizing Your Cluster with Coordinator Nodes (Eric Lubow, SimpleReach) | Ca...DataStax
With the addition of vnodes (Virtual Nodes), Cassandra users were able to gain a few benefits as a result of streaming when it came to bootstrapping and decommissioning nodes. On the flip side, having to route requests on larger clusters became a lot more intensive of a workload for all nodes that were then forced to act coordinator nodes. By setting up a tier of proxy nodes, we were able to have our cluster of 50 nodes perform with a 300% improvement on average in a mixed workload environment. This is an explanation of what we did, how we did it, and why it works.
About the Speaker
Eric Lubow CTO, SimpleReach
Eric Lubow is CTO of SimpleReach, where he builds highly-scalable distributed systems for processing analytics data. Eric is also a DataStax MVP for Cassandra, and co-author of Practical Cassandra. In his spare time, Eric is a skydiver, motorcycle rider, mixed martial artist, and dog dad.
"Cloudian’s new solution, Cloudian 2.4, maximizes data protection, availability and security, which are critical for enterprises looking to deploy their own private cloud or move their data to the public cloud. For multi-datacenter deployments, Cloudian now provides Dynamic Consistency Levels, offering unprecedented data protection and ensuring continuous, uninterrupted operations in the case of network or site failures. "
See more detail at Cloudian Press Release.
http://www.cloudian.com/news/press-releases/press-release-25.html
Astroinformatics 2014: Scientific Computing on the Cloud with Amazon Web Serv...Jamie Kinney
An overview of Amazon Web Services (AWS) and a survey of scientific computing applications of cloud computing. Examples come from the fields of Astronomy, High Energy Physics and include examples from CERN, NASA and others.
Apache Cassandra performance advantages of the new Dell PowerEdge C6620 with ...Principled Technologies
The PowerEdge C6620 with PERC 12 delivered lower latency and higher throughput than an HPE ProLiant XL170r Gen9 server with an HPE Smart Array P440ar controller
Conclusion
Data proliferation today is rapid, and its growth shows no signs of stopping. For businesses that can take advantage of that data, there is tremendous potential value. One recent McKinsey study notes that “companies that are using data-driven B2B sales-growth engines report above-market growth and EBITDA increases in the range of 15 to 25 percent.” With data flooding in so quickly and in so many different forms, however, companies need high-performing big data solutions to have a chance at utilizing that data effectively.
We tested the performance of two platforms with a read-intensive Apache Cassandra database system bigdata workload to assess which might be better suited to speedily deliver the insights decision makers need. Compared to an older HPE ProLiant XL170r Gen9 server with an HPE Smart Array P440ar controller, the new Dell PowerEdge C6620 with Broadcom-based PERC 12 RAID controller delivered faster read and update latencies and more than twice the throughput. This improvement in performance can help you glean more value from your unstructured data more quickly. If you’re watching your stores of unstructured data grow but are still leaning on older servers for your critical Cassandra workloads, it may be time for an upgrade.
Learn how Amazon Redshift, our fully managed, petabyte-scale data warehouse, can help you quickly and cost-effectively analyze all of your data using your existing business intelligence tools. Get an introduction to how Amazon Redshift uses massively parallel processing, scale-out architecture, and columnar direct-attached storage to minimize I/O time and maximize performance. Learn how you can gain deeper business insights and save money and time by migrating to Amazon Redshift. Take away strategies for migrating from on-premises data warehousing solutions, tuning schema and queries, and utilizing third party solutions.
Data Warehouse Scalability Using Cisco Unified Computing System and Oracle Re...EMC
This Cisco white paper describes how the combination of EMC VNX storage matched to Cisco UCS B-Series blade servers offers a major deployment platform boost that is urgently needed to contend with the rapid increase in data volume and processing demand for Oracle data warehouse projects.
Dyn delivers exceptional Internet Performance. Enabling high quality services requires data centers around the globe. In order to manage services, customers need timely insight collected from all over the world. Dyn uses DataStax Enterprise (DSE) to deploy complex clusters across multiple datacenters to enable sub 50 ms query responses for hundreds of billions of data points. From granular DNS traffic data, to aggregated counts for a variety of report dimensions, DSE at Dyn has been up since 2013 and has shined through upgrades, data center migrations, DDoS attacks and hardware failures. In this webinar, Principal Engineers Tim Chadwick and Rick Bross cover the requirements which led them to choose DSE as their go-to Big Data solution, the path which led to SPARK, and the lessons that we’ve learned in the process.
Speeding time to insight: The Dell PowerEdge C6620 with Dell PERC 12 RAID con...Principled Technologies
The new PowerEdge C6620 delivered better performance—both higher throughput and lower latency—than a previous-generation PowerEdge C6520 with PERC 11
Conclusion
The vast amounts of unstructured data that people and organizations generate daily have the potential to bring incredible value to companies that can utilize it quickly and correctly. Buried in the data are insights about consumer preferences, product performance, environmental trends, and more—but to access those insights at the speed of business, you need high-performing NoSQL databases. Aging servers may be holding you back from the full value of your data.
We found that the new Dell PowerEdge C6620 with Broadcom-based PERC 12 RAID controller can speed read-intensive Apache Cassandra database workloads compared to an older server solution. Faster read and update latencies and higher throughput, as we saw the PowerEdge C6620 deliver, can speed the retrieval, processing, and analysis of your unstructured data, enabling you to more effectively extract its value. To more fully utilize your data to inform your everyday business operations, consider the Dell PowerEdge C6620 with Broadcom-based PERC 12 RAID controller.
Speeding time to insight: The Dell PowerEdge C6620 with Dell PERC 12 RAID con...
FULLTEXT02
1. Faculty of Computing
Blekinge Institute of Technology
SE-371 79 Karlskrona Sweden
Performance Tuning of Big Data
Platform
Cassandra Case Study
SATHVIK KATAM
Thesis no: MSEE-2016:18
2. i
This thesis is submitted to the Faculty of Computing at Blekinge Institute of Technology in partial
fulfillment of the requirements for the degree of Masters in telecommunication systems. The
thesis is equivalent to 20 weeks of full time studies.
Contact Information:
Author(s):
Sathvik Katam
E-mail: saka15@student.bth.se
University advisor:
Emiliano Cassalicchio,
Senior Lecturer in Computer Science
Computer Science and Engineering Department
Blekinge Institute of technology
Faculty of Computing
Blekinge Institute of Technology
SE-371 79 Karlskrona, Sweden
Internet : www.bth.se
Phone : +46 455 38 50 00
Fax : +46 455 38 50 57
3. ABSTRACT
Usage of cloud based storage systems gained a lot of prominence in fast few years.
Everyday millions of files are uploaded and downloaded from cloud storage. This data that cannot be
handled by traditional databases and this is considered to be Big Data. New powerful platforms have
been developed to store and organize big and unstructured data. These platforms are called Big Data
systems. Some of the most popular big data platform are Mongo, Hadoop and Cassandra. In this we
used Cassandra database management system because it is an open source platform that is developed
on java. Cassandra has a master less ring architecture. The data is replicated among all the nodes for
fault tolerance. Unlike MySQL, Cassandra uses per-column basis technique to store data. Cassandra is
a NoSQL database system, which can handle unstructured data. Most of Cassandra parameters are
scalable and are easy to configure.
Amazon provides cloud computing platform that helps a user to perform heavy
computing tasks over remote hardware systems. This cloud computing platform is known as Amazon
Web Services. AWS services also include database deployment and network management services, that
have a non-complex user experience. In this document a detailed explanation on Cassandra database
deployment on AWS platform is explained followed by Cassandra performance tuning.
In this study impact on read and write performance with change Cassandra parameters
when deployed on Elastic Cloud Computing platform are investigated. The performance evaluation of
a three node Cassandra cluster is done. With the knowledge on configuration parameters a three node
Cassandra database is performance tuned and a draft model is proposed.
A cloud environment suitable for experiment is created on AWS. A three node
Cassandra database management system is deployed in cloud environment created. Performance of this
three node architecture is evaluated and is tested with different configuration parameters. The
configuration parameters are selected based on the Cassandra metrics behavior with change in
parameters. Selected parameters are changed and performance difference is observed and analyzed.
Using this analysis, a draft model is developed after performance tuning selected parameters. This draft
model is tested with different workloads and compared with default Cassandra model.
The change in key cache memory and memTable parameters showed improvement in
performance metrics. With increases of key cache size and save time period, read performance
improved. This also showed effect on system metrics like increasing CPU load and disk through put,
decreasing operation time and
The change in memTable parameters showed effect on write performance and disk
space utilization. With increase in threshold value of memTable flush writer, disk through put increased
and operation time decreased. The draft derived from performance evaluation has better write and read
performance.
Keywords: Big Data platforms, Cassandra, Amazon
Web Service, Performance tuning.
4. 2
Table of Contents
ABSTRACT I
ACKNOWLEDGMENT 2
ABBREVIATIONS 5
LIST OF TABLES 6
LIST OF FIGURES 7
1 INTRODUCTION 8
1.1 THESIS STATEMENT: 8
1.2 BACKGROUND 8
1.3 RESEARCH QUESTIONS 9
1.4 SCOPE OF IMPLEMENTATION 9
1.5 OBJECTIVES 9
2 RELATED WORK 10
2.1 STATE OF THE ART 10
2.1.1 CASSANDRA PERFORMANCE EVALUATION: 10
2.1.2 CASSANDRA TOOLS 10
2.1.3 AWS COMPUTING: 10
3 BASE TECHNOLOGIES 12
3.1 APACHE CASSANDRA 12
3.1.1 CLUSTER: 12
3.1.2 DATACENTER 12
3.1.3 NODE 12
3.1.4 KEY SPACES 12
3.2 AMAZON WEB SERVICE: 13
3.2.1 VIRTUALIZED PRIVATE NETWORK (VPC): 13
3.2.2 SUBNET: 13
3.2.3 SECURITY GROUP 14
3.3 CASSANDRA DATA STRUCTURE 14
3.3.1 COLUMN STRUCTURE 14
3.3.2 WRITE PATH 15
3.3.3 READ PATH: 15
3.4 CASSANDRA PARAMETERS 16
3.4.1 CACHE MEMORY (READ PERFORMANCE) 16
3.4.2 MEMTABLE (WRITE PERFORMANCE) 17
4 METHODOLOGY 18
4.1 OUTLINE: 18
4.2 CLOUD SETUP: 19
4.2.1 DEPLOYING A VPC 19
6. 4
ACKNOWLEDGMENT
I would like to thank my supervisor, Prof. Emiliano, first. He believed in my efforts
and made me learn from my mistakes. In spite of being Senior lecturer and editor of
online journals, he always found time to help me. He also encouraged be by providing
enough recourses.
Thanks to my father, Mr. Sanjeev, for motivating me with his words. Whenever I
felt like giving up, his words kept me moving forward.
Thank you, Prof. Kurt, for being great examiner and advisor. His advices and
comments on thesis gave motivation to approach scientifically.
7. 5
ABBREVIATIONS
AWS Amazon Web Service
EC2 Elastic Cloud Computing
NoSQL Not only SQL
SQL Structured Query Language
MB Mega Bytes
GB Giga Bytes
SSH Secure Shell
MBps Mega Bytes per second
VPC Virtual Private Cloud
TCP Transmission Control Protocol
RF Replication Factor
JMX Java Management Extensions
CPU Central Processing Unit
OS Operating System
IP Internet Protocol
RAID Redundant Array of Independent Disks
SSD Solid State Drive.
HDD Hard Disk Drive
8. 6
LIST OF TABLES
Table 1 Security Group List....................................................................................................19
Table 2 Key Cache Size Default Conf. Result........................................................................26
Table 3 200MB Key Cache size .............................................................................................27
Table 4 500MB Key Cache size .............................................................................................27
Table 5 700MB Key Cache size .............................................................................................28
Table 6 1000MB Key Cache Size...........................................................................................28
Table 7 Deafult Key save time................................................................................................28
Table 8 Tested Key save time period......................................................................................29
Table 9 Memory allocation Cassandra Metrics ......................................................................30
Table 10 Memory allocation System metrics .........................................................................30
Table 11 Number of Flush Writers Cassandra metrics...........................................................30
Table 12 No. of Flush writers System metrics........................................................................30
Table 13 memTable Clean Up Cassandra metrics.................................................................31
Table 14 memTable Clean Up System metrics.......................................................................31
Table 15 Draft model performance.........................................................................................36
9. 7
LIST OF FIGURES
Figure 1: Cassandra Architecture............................................................................................13
Figure 2: AWS cloud architecture ..........................................................................................14
Figure 3 Column structure ......................................................................................................15
Figure 4 write path..................................................................................................................15
Figure 5 read path ...................................................................................................................16
Figure 6 Monitoring tool architecture.....................................................................................25
Figure 7 Hit rate......................................................................................................................32
Figure 8 Key save time period................................................................................................33
Figure 9 Write Requests..........................................................................................................34
Figure 10 Disk memory used..................................................................................................35
10. 8
1 INTRODUCTION
In this era of cloud computing technology there is a great demand on Bid Data
system services. Big data systems are very effective in managing unstructured data.
Some the most popular big data systems are Mongo DB, Hadoop and Cassandra.
Cassandra is an open source NoSQL distributed database management system that
is incredibly powerful and scalable. It is designed to handle big data. Its distributed
architecture is user friendly makes it compatible for cloud based infrastructure. NoSQL
databases is capable of handling big data that is not possible for a traditional SQL to
handle[1]. The node is place where data is stored. These nodes are distributed over a
datacenter. A typical large scale enterprise uses more than one datacenter these are
managed over a single cluster. The placed on a single data center can communicate with
each other and replicate data for fault tolerance. Cassandra has a master-less architecture
that makes Cassandra durable[1]. To explain the architecture in brief we consider three
node database system and this architecture is also used throughout the experimentation.
In Cassandra all writes are automatically replicated on all three nodes depending on the
replication factor[2]. All three nodes are peer to peer connected and communicate
equally. This makes all nodes identical. This helps Cassandra to offer continuous up
time and ability to handle thousands of concurrent operations.
Apache Cassandra was implemented as project of Facebook to handle Facebook
Messenger Inbox. The later versions are used my many other large scale companies like
Google, Netflix and eBay etc.
To understand Cassandra in a complete cloud environment it is delayed in Amazon
web Server(AWS). AWS is a cloud computing platform where databases, storage
systems, cloud drives and virtual machines can be deployed[3]. Amazon allows user to
rent Virtual Machines and run them on servers Amazon own. The virtual machines
installed in amazon web servers can be accessed through SSH client. AWS are installed
12 in location around the world. In this experiment three Amazon Web Server’s EC2
instances are deployed on N. Virginia Amazon servers and Cassandra is installed over
them to create three node Cassandra database system. This cloud based Cassandra’s
performance is analyzed in this thesis.
1.1 Thesis statement:
In this research, apache Cassandra behavior in cloud environment is studied. Apache
Cassandra’s scalable configurations and their impact on performance metrics is
understood. The configuration with best write and read performance is derived by
investigating a three node cluster on Amazon Cloud Computing server(AWS). A draft
model is developed from that configuration and verified.
1.2 Background
Everyday thousands of files are uploaded to cloud storage. This is because of reason
that it can be accessed from anywhere over the world with proper internet connection.
Most of these files are pictures and videos which occupy larger space than typical text
file[4]. Over 1 million files uploaded to drop box alone in a single day. 300 hours of
video is uploaded to YouTube every hour[5]. To manage this large amount of data we
need a powerful database management system.
So companies like Facebook, Netflix and Apple started using a NoSQL database
management system called Cassandra[1]. Cassandra is prominently used by many other
popular companies because it is fault tolerant and decentralized[6]. It is a new breed in
NoSQL database system. Being an open source software Cassandra helped developers
11. 9
and engineers to come up with new innovative solutions to solve some of major
problems Cassandra is facing and improve its performance.
It is not possible to achieve maximum performance from Cassandra database
management system, if it is used in default configuration. These out of the box
configurations must be modified according to hardware specifications and user
requirements.
In this thesis we study how Cassandra performs with change in different
configuration parameters in virtualized environment created on Amazon Web Server
using EC2 instances. This information is used to find relation between each selected
parameter and system performance metrics. We also propose best possible configuration
for a given system at given load.
To select the most significant parameters that effect Cassandra a performance, the
behavior of Cassandra is studied. After detailed study of Cassandra parameters Key
cache, Row cache and memTables are selected. For further investigation on these
parameters and their effect on performance metrics, a virtualized three node network of
Cassandra is created on Amazon Web Server using EC2 instances. On this cloud based
network, cache memory on every node is configured and tested with read heavy work
load. After cache memory, memTable configurations are changed and test with write
heavy. This procedure is repeated until configuration with best performance is found.
1.3 Research Questions
• How scalable is Cassandra and which of the configuration parameters effect
its performance?
• What is best possible configuration of Cassandra for a given hardware
specification?
• How does a draft model proposed perform compared with default Cassandra
model?
1.4 Scope of implementation
The idea in this project is for cloud implementation, though it can also be
implemented in other traditional networks. Amazon Web Service instances are taken for
lease and big data system is constructed. Cassandra database management system is.
installed. There are many other big data systems like MongoDB and Hadoop, which can
be tested in similar environment. This thesis uses 3 node Cassandra network but it can
be scaled up for large scale analysis.
1.5 Objectives
• Deep analysis about Cassandra and Big data systems.
• Identifying most effective performance tuning parameters.
• Defining a three node network in theory and understanding its behavior.
• Deploying three node Cassandra system on Amazon Web Server.
• Find best possible configuration for different workloads and implement a draft
model with defined configuration.
• Understand draft model performance and compare it default Cassandra model.
12. 10
2 RELATED WORK
In this section we discuss some significant and related research articles in the field
of cloud computing and big data systems.
2.1 State of the art
2.1.1 Cassandra Performance evaluation:
There has been a lot of work addressing the configuring Cassandra in cloud
environment. The research activity ranges from configuring different big data systems
to developing a monitoring tool in the present study we discuss about configuring
Cassandra for read heavy write heavy workloads. We also virtualizes Cassandra
environment on cloud base servers. In paper, an overview of Cassandra data model is
given and hoe key-value stores are replicated among the nodes is discussed.
In this paper[7], an architecture of a quality of service infrastructure for achieving
controlled application performance over Cassandra distributed data system is described.
This paper also explains how dynamic adaptation on Cassandra works. The study of
infrastructure is done on Amazon web service this helped in explaining extensive
evaluation of Cassandra on Amazon web service EC2 instance.
In this paper [8],the explanation of Cassandra metrics collection and monitoring
database performance efficiency is done. In this paper it also explain how node utility
function works and it helps in performance tuning.
In this paper [9] how different key value stores work in different data storage
systems in cloud environment. Widely used systems like Cassandra Hbase and
voldemort are compared with different query of workloads. This paper also shows how
to manage Cassandra data from command line interface.
2.1.2 Cassandra Tools
In this book [10] many programmable codes and configuration examples are
explained this helped our study to develop a monitoring tool and collect accurate results.
In this book [11] Cassandra data modeling is briefly gone through explaining its
heredity from Google big table. Here Cassandra query language is also discussed in
detail. By the end of data modeling replication factor, network topology, and inter data
center communication is learnt.
In this book [12]how JAVA virtual machine in Cassandra works is extensively
explained followed by tuning concurrent readers and writers for throughput in this paper
boosting re-performance with keycache memory is explained. This book also gives
guidance to define your hardware specifications before installing Cassandra.
2.1.3 AWS computing:
In this book[13], helped to understand AWS management techniques and provided
information to choose between different cost management schemes. This help us save
13. 11
money without compromising with resources. BTH provides $100 for this thesis. This
is money is enough, if the techniques motioned in this book are put to use.
It is also important to avoid spending money on unnecessary resources and services.
Most of the services like auto scaling and cloud watch comes by default on AWS EC2
services. They are eliminated by deactivating or consulting respective AWS engineer.
Expenses spent of instances vary depending on their geographical location. We used
a m3.large instances at N. Virginia because out of all 12 geographical locations North
Virginia has least rent per hour.
This book [14], helped to configure VPC and subnets and have better security on
AWS
14. 12
3 BASE TECHNOLOGIES
3.1 Apache Cassandra
To understand apache Cassandra architecture, we must have knowledge on key
terms. The key terms and their description are as follows. Node, it is the place where
Cassandra stores its data. These nodes are launch on a single datacenter. This helps the
node to intercommunicate and replicate data for fault tolerance. Nodes cannot
communicate out of data centers if they use simple topology. So it is recommended to
use Network Topology Strategy.
To understand in detailed about Cassandra architecture and data storage procedure,
key concepts and components in Cassandra are explained below.
Cassandra has master-less ring architecture and three major components. Data
distribution can also be explained with
3.1.1 Cluster:
Cluster holds a set of data centers. Clusters are isolated i.e., two cluster cannot
communicate with each other and share data. It allows user to add a node or delete a
node. Deleting a node is called decomposition. Cluster can make nodes isolated and
share data by configuring with different data centers.
3.1.2 Datacenter
In cluster to differentiate between two three (three is considered as an example) node
architectures, datacenters are created. Two data centers can communicate with each
other depending on strategy configured. Simple strategy does not allow datacenters to
communicate. To make datacenters communicate with each other they must be
configured in Network Topology strategy. Isolating datacenters shows effect on data
distribution and replication factor behavior.
3.1.3 Node
Nodes are distributed over data center like a ring[15]. Every node in the cluster
has same role in storing the data. When client writes on a single node, the data is
replicated on every node depending on replication factor. Replicating data among nodes
help Cassandra to perform heavy load operation without fear of losing data. When a
three node apache Cassandra data base system is deployed, it forms a ring with three
nodes. All three nodes are peer to peer connected. In this thesis AWS m3.large instances
are used as nodes. Another instance is used to act as a client.
3.1.4 Key spaces
The data is stored in columns that are arranged according to key in tables. The data
structure is explained in the section 3.3. These tables are stored in key spaces. Key
spaces are created by user to make data management easy this helps
15. 13
Figure 1: Cassandra Architecture
3.2 Amazon Web Service:
Amazon Web Service is a cloud computing platform introduced by amazon. AWS
helps users worldwide to use resources to create a database or perform a high load
rendering which needs larger CPUs, GPUs and Storage. An average small scale cannot
invest on high performance hardware and have space or equipment to maintain them.
AWS provides a solution for this. Hardware with very high specification are installed in
12 geographical location and virtual machines and database systems are installed on
them. These are given out for rent an can be accessed over shh client to operate the
VM. This helps user to save money invested on hardware and get the work done[3].
3.2.1 Virtualized Private Network (VPC):
AWS Virtualized Private Network is a software defined network. Amazon provides
a web GUI to configure this VPC. it is logically isolated network that can allow accesses
to range of IP addresses defined on AWS dashboard. To predefined hosts a Nat gateway
access is granted and can be accessed thorough port 22. VPC is easy to configure and
deploy on a clod platform. Creating VPC dresses security threats and block unnecessary
port accesses. VPC can be extended. Extending VPC helps user to install personal web
server or a cloud drive[16].
3.2.2 Subnet:
When VPC is installed on AWS it comes with preinstalled and configured subnet.
Subnet is a network where instances are deployed to intercommunicate and are isolated
to from other instances. More than one instances can be installed on a single VPC. Each
subnet is isolated from each other by default. The ports in subnet can also be defined on
web based dashboard AWS provides. Configuring helps to define hosts that can have
internet gateway with instances in the subnet. Creating a subnet makes managing
multiple instances at a time easy[16].
16. 14
3.2.3 Security Group
To ensure the instances does not communicate to any other hosts, a security group
is assigned to it. A security group consists of a lit of inbound and outbound rules. These
rules define the ports that allow traffic. The rules in security group can be defined on
AWS dashboard[16].
Figure 2: AWS cloud architecture[16]
3.3 Cassandra Data Structure
The data in Cassandra is stored as tables. Every key space in Cassandra hold set of
tables. The tables options to choose type of caching, compaction and etc. Keyspaces
have options to choose network topology and replication factor. This helps Cassandra
to customize even at table level. Basic structure of column has three values column
name, value and time stamp. A key space has column family which is on definition a set
a of columns[17].
3.3.1 Column structure
The columns that hold data are stored in their respective keyspace. These columns
have three partitions like key, value and time stamp. Each part has their own use.
Key is the information used to locate data. When a user requests a read request,
Cassandra uses keys to find the location of the column and table it is stored in. Key only
works if the table is not compacted. If the tables are compacted, they are located using
time stamp. The time stamp is located in the third part of the column. The data in the
second part, value, varies if it is a super column. If it is an ordinary column, the value
stores the data written by user.
17. 15
Figure 3 Column structure[11]
3.3.2 Write path
A local coordinator receives the write request and determines the nodes to receives
the request and replicate Data along the cluster. Local coordinator also defines if the
data should be modified are materialize. A batch log is created for keeping track of data
modified or updated. The write requests are replicated among three nodes
simultaneously. The data is written into commitlog of every node. The batch log created
is written into memTable. The same process is done in every node. When the data is
interested into a table, it enters into commit log. If cache is enabled the data is
cached[18].
Memtables are flushed into SStables(Sorted String Table). This process has seven
steps they are as follows.
The columns in memtables are sorted according to row key. The data is written into
Bloom filter along with Indexes. The serialized data is now written into SSTable data
file.
SStables tables merged together with predefined strategy. This is called
compaction. A compaction is done in following steps.
The SSTables are compressed together, if compression is used. If not, they are
compacted and saved into a single data file. The statistics are logged. The saved data is
deleted from commitlog.
Figure 4 write path[18]
3.3.3 Read path:
The local coordinator gets the read requests and defines which node must handle
those requests. When the request reaches node. It is first verified if required data is
available on row cache memory. If request gets hit it takes data to user. If not, read
request enters key cache memory. Key cache memory hold the index of data columns
stored in SStables. The required data’s index is found and column is retrieved from
SStable.
If the data is old, then Cassandra looks for partition key in memTable and finds the
time stamp to find the data in disc that are compacted.
The merged data is returned to the local coordinator.[19]
18. 16
Figure 5 read path[19]
3.4 Cassandra Parameters
3.4.1 Cache Memory (Read Performance)
Cassandra read performance is not good as expected when it is started or rebooted.
This occurs because all the data in cache memory is flushed. This problem is called cold
start[20].
To overcome the problem of cold start when the system is restarted. Some of its
heap memory is slotted to act as integrated or distributed caching. Enabling cache makes
read path short and improve read performance. caching can be configured to perform
even better at read heavy load.
Caching is enabled or disabled while creating table. caching is of two kinds row
caching and key caching. Row cache saves the entire data in the heap memory. If read
operation hits row cache it directly returns to the client without making a quire in disc.
Row cache in theory can improve 30% of read performance but can only access recent
data[21]. If save period of the data exceeds row_cache_save_period (seconds) then data
is flushed to SStable. As you cannot save entire database in row cache. It is only effective
when user reads recently written data. This can be abused in some cases because it uses
system resources to cache written data[7].
To avoid unnecessary resource usage, key cache can be configured to high
performance. Key cache stores indexes of the data. This makes Cassandra find location
of data easy on the disc. Key cache also uses system resources but it does not use as
much space as row cache. It is always good choice to key cache to configure row cache
while accessing random data in Big data systems.
Cassandra offers six options to play with to optimize cache performance. Out of
which three are key cache parameters. Three parameters:
• cache size (KEYCACHE SIZE),
• number of keys
• time to save (KEYCACHE SAVE TIME PERIOD).
Before configuring these parameters, the metrics that are depending on these
configurations must be monitored and logged. This helps us define limitation for these
parameters. Going beyond limits would lead to high system resource use which will
directly affect system performance as cache memory uses heap memory. Some of the
system metrics that would be effected by changing cache parameters are:
• CPU utilization,
• read throughput (MBps)
• memory utilization (MB)
• overall throughput (operations per seconds).
19. 17
The Cassandra metrics that would be effected are
• read latency
• key cache hit rate and
• hit rate.
3.4.2 MemTable (Write performance)
Cassandra does not have much of parameter configuring options to improve write
performance. The major factors that affect disk write through put and disk space
utilization are compaction and compression. The compaction can be optimized by
defining compaction strategy or changing the size in SStables. When a write request is
given to a node the memTable defines the size of the column and stores them in.
Compaction also depends on how much data memTables hold before flushing.[22]
Decreasing the number of compactions, increases the amount of data that can be
flushed at a time. If tables are modified repeatedly, it is easy to access when table is
located in memTable. As memTables and cache memory share heap memory
overpowering memTable can decrease read performance.
In the write path of Cassandra motioned in section 3.3.2, when data is written into
Cassandra it enters data in two places. They are comitlog and memTable. Configuring
commitlog parameters would improve disk through put and partially write performance,
theoretically. Commitlog data is temporary i.e., the data stored in commit log is purged
after the tables in the SStables are compated and moved to disk. So, configuring
commitlog would not change Cassandra performance at high loads.
The memTable on the other hand plays a very key role is writing the data and
changing the size of column.
20. 18
4 METHODOLOGY
4.1 Outline:
There are five steps to complete this thesis they are as follows
• Selecting core parameters
• Creating a suitable cloud environment on AWS
• Deploying three node Cassandra architecture into cloud environment
• Selecting monitoring tools
• Developing a monitoring tool
• Testing with different configurations
• Deriving a draft model.
Before implementing Cassandra on AWS, a research is carried out studying on read
and write path of Cassandra along with factors effecting read and write performance.
This helped us to gain knowledge on Cassandra parameters and their effect on read and
write performance. The parameters selected are Key cache for read performance and
Memtable for write performance. The read and write paths showed in Section 4.4
explains the reason behind selecting these parameters.
To make thesis experimentation completely cloud based the Cassandra nodes are
installed on Amazon EC2 instances. Conducting this experiment in a cloud based
environment have pre requirements like creating virtualized private network, subnet and
a new security group. As these are software defined networks, these are created and
configured on AWS console. AWS console is a web GUI which helps to monitor and
change your logically created isolated network.
Virtualized Private Network (VPC) is configured to receive and send packets from
your local host through port 22. Two subnets are installed in VPC which are isolated
and cannot communicate to each other. In one of the subnet EC2 m3.large instances are
launched. To grant accesses to the ports that are essential to create a three node
Cassandra database a security group is assigned to the subnet. The security group has
the list of ports that can be communicated by specified IP address or any IP address.
The instances used are Datastax community AMIs. They come with pre-installed
Cassandra 2.2. To create a cluster that has three nodes and a client, instances must be
configured. In the Cassandra installation directory, cassandra.yaml file exists in conf
folder. That file is used to configure and make the node to listen to a seed. The
configuration is done in all three nodes and a three node cluster with a client with
Cassandra stress to is created.
Using command line interface, a keyspace “exe” is created which has a replication
factor 3 and simple network topology. In this keyspace a table is created which has key
cache enabled and other default settings.
To stress Cassandra database with multiple write and read requests, Cassandra stress
tool is used. The cluster is stress tested with read load, write load and balanced load with
exe keyspace schema. The Cassandra metrics like key cache hits, read requests, write
requests, number of compactions, pending flushes and latencies are collected along with
system metrics like load, disk read/write through put and CPU utilization are collected.
This experiment is repeated with increasing read/write rate requests from 10,000 req/sec
to 30,000 req/sec. Data is collected for every 5000 req/sec hike.
The key cache memory has three configuration parameters each of them are
configured by keeping other two in default value. Every configuration is tested with
different load levels. Before testing key cache, it is populated by sending 50Milion write
requests to keyspace “exe”. Memtable has six configurations parameters to be adjusted
21. 19
so there are more possible set of configuration to be tested. Memtable follows similar
testing method. Memtable has six global configuration parameters. As all configuration
parameters are inter dependent on each other, a pre-defined sequence is derived using
theoretical information. Following this sequence can reduce un-necessary tests, saving
time and resources. Memtable stress tests are write heavy. 50Million requests are for
every stress test and related metrics are monitored and logged. These results are
collected and analyzed for final configuration. Using the information gained from
previous tests a new draft model is derived.
4.2 Cloud Setup:
In this section it is elaborated how cloud architecture is deployed on AWS servers
and configured to make thesis possible.
4.2.1 Deploying a VPC
A Virtual Private Network is created on AWS and desired name is given. In this
thesis it is given Cassandra. Tenancy of the network is selected as public and private in
the zone us-east-1b. To allow the traffic into network inbound rules and outbound rules
are configured. Now the internet gateway allows the remote host to connect to instance
through port 22.
4.2.2 Creating a subnet
To create subnets in VPC, we must decide to use public or private subset. This setup
is done under public subnet because it uses public IP address to connect or an elastic IP
address. We used public subnets because it gets accesses to internet gateway by default
if VPC has it. In case of private subnet, a virtual private gate and VPC connection should
also be created which make the architecture more complicated and only corporate
network can have its optimal use. Each subnet gets 252 IP address to use. It is 10.0.184.2
to 10.0.184.254
4.2.3 Creating a Security Groups:
Table 1 Security Group List
Port Range Protocol Access IP Reason
22 SSH 0.0.0.0/0 To connect to AWS instance using
SSH stand-alone client
8888 TCP 0.0.0.0/0 Demon listen HTTP port for
OpsCenter
1024-65355 TCP Host IP JMX reconnection
7000 TCP Host IP Inter-node communication
7001 TCP Host IP SSL inert-node communication
7199 TCP Host IP JMX monitoring
61620 TCP 0.0.0.0/0 OpsCenter
61621 TCP 0.0.0.0/0 OpsCenter
22. 20
AWS by default creates a security group. This default security group gives
accesses only to port 22 [23]. But to monitor and make internode communication, we
need accesses to a set of more ports. Creating a security group is also needed to create
between subnets in the VPC.
The list of ports and their configurations are tabulated in table above.
4.2.4 Launching EC2 instances:
Before launching an instance, we must select specification suitable for requirements.
For this experiment we chose m3.large instance. AWS EC2 m3.large instances have
8GB physical memory and 2 vCPUs. High frequency Intel Xenon E5- 2670 v2 processor
powers the system. Four of these instances are launched under single subnet and made
sure they communicate with each other[24].
4.2.5 Selecting Storage:
Selecting between Solid State Drive (SSD) and Hard Disk Drive (HDD) shows large
impact on disc RAID. To maximize speed of test runs and have high performance
storage drive an SSD of 30GB for each node is used.
4.3 Cassandra Setup:
4.3.1 Installing prerequisites
Make sure every virtual machine installed with java python and Java Native Access.
Cassandra is a java based database management system. So it is important to have
OpenJDK 7 or latest version installed so that Cassandra runs trouble-less. Most of the
Cassandra monitoring tools are python based so make sure latest version of Python is
available for them to use. If these softwares are not available, installing them as a super
user is recommended.
4.3.2 Cassandra Package:
Before installing Cassandra package update Ubuntu OS files. In this thesis we used
DataStax Community Edition version 2.1 Cassandra package. As EC2 instance does not
give accesses to use a web browser, package is installed using command line interface.
After installation Cassandra starts up automatically. Stop Cassandra and delete
Cassandra junk if collected.
4.3.3 Creating Cluster
Cassandra is installed in all the instances. All four nodes must be test to verify if
Cassandra is working. Ip addresses of all instances are noted down. In this thesis we are
using only one node as a seed. Just make processes in future easy, we select the first IP
address (10.0.184.2) as seed and last IP address (10.0.184.5) as client.
Cassandra processes on all four nodes are killed to start configuration. Configuring
Cassandra is possible only if user has root accesses. So root accesses are granted and
"cassandra.yaml” located "conf" folder at installation directory is edited[25].
By default, Cassandra names its cluster as Test_Cluster. This is changed to BTH on
all four nodes just to make sure nodes and client is operated under one cluster. The seed
23. 21
in all three nodes is changed to 10.0.184.2 by adding seed’s private IP address at “-
seeds:” in cassandra.yaml file and removing local host IP address. Database on three
nodes must be mentioned same as we are using simple topology.
After configuration is done turn off the firewall and start Cassandra. Now the cluster
has three nodes and one client[26].
4.3.4 Changing Parameters:
Cassandra is a scalable data management system. It defines database configuration
by reading cassandra.yaml file. User can change database configuration parameters by
defining them in cassandra.yaml file. But before changing and saving configuration file,
Cassandra service must be stopped and previous data must be deleted to make sure the
results collected are accurate.
4.3.5 Creating a keyspace:
Every key space can be defined with specified caching type, replication factor and
size of column. So, a keyspace with key caching enabled and replication factor three.
Selecting rreplication factor will make sure that similar data is written on all three nodes.
By enabling keys, the kay are assigned to columns along with value stored on the node.
4.3.6 Stressing database
Cassandra stress tool which comes installed along with Cassandra is used to generate
read and write requests from client. Cassandra stress tool comes with options like
selecting duration of test, mentioning number of request to be sent and share work load
between read and write. Using Cassandra stress tool, node and keyspace can be
specified to test[23].
4.4 Configuring
We cannot just increase all configurable values and conclude the best configuration
by single test run. To find the sweet spot of configuration that does not use much of
system resources and outperform in benchmarking, we must play little with
configuration and conduct multiple test runs with different loads.
To configure a node, respective parameter is located in designated .yaml file and a
value is defined. All three nodes are configured to same value and tested with replication
factor 3. To have similar tests throughout experiment a keyspace is created. This key
space is named as “exe” and also configured to replication factor 3 and Simple
topology[27].
4.4.1 Key Cache:
After literature study on how key cache works, a set of configuration are selected
depending on system specifications.
Key cache have three global parameters. We configure these three parameters to
solve cold start and attain better read performance.
24. 22
4.4.1.1 key_cache_keys_to_save
Configuring this parameter increases or decreases keys saved to cached which help
in increasing read performance on old files.
4.4.1.2 key_cache_save_period
To save cold start problem this is a perfect parameter to start configuring. This
parameter defines the duration to save keys in the cache memory. By default it four
hours. For the experiment selected parameters are five hours, five hours 30 minutes, six
hours and three hours.
4.4.1.3 key_cache_size_in_mb
This parameter must be increased carefully because it directly affects CPU
utilization. By default, it is set minimum which in our case is 92MB. Considering 1.8GB
heap memory and 7 GB physical memory, 200 MB, 300MB, 500MB, 700MB and
1000MB are set of values selected to test.
4.4.2 MemTable:
The memTable configurations are all global. So, changing node configuration also
changes table and keyspace properties. Before configuring, data in memTables should
be flushed.
There are six global configuration parameters. Three of global configurations are
dependent on system specification and other are dependent on each other[22].
4.4.2.1 MemTable allocation type
Changing this parameter will change the location of memTable data store in
Cassandra. This will on change how Cassandra manages memTable data. There are three
possible configurations to choose from, they are heap_buffer, offheap_buffer and
offheap_objects. Heap buffer will store read and write requests as buffer. Heap memory
is used as buffer storage. Offheap buffer does not store data of non-blocking requests.
Offheap_objects will eliminate heap overhead requests.
4.4.2.2 MemTable cleanup threshold
Here we can define Cassandra at what memory should it should flush memtables to
SStables. This will show large effect on number number of compactions which will
change Cassandra ability to handle write requests.
4.4.2.3 File cache size
Configuring this parameter effects read performance than write performance. Here
user can define amount of data that can be cache in memTable for SStable read buffer
4.4.2.4 MemTable flush writer
Sets the number of memTable flush writer threads. These threads are blocked by
disk I/O, and each one holds a memTable in memory while blocked. If your data
directories are backed by SSD, increase this setting to the number of cores.
25. 23
Changing this configuration will also change memTable cleanup threshold. As they
are mathematically related.
memTable_cleanup_threshold = 1 / (memtable_flush_writers + 1)
4.4.2.5 MemTable heap/offheap space
Total permitted memory to use for memTables. Triggers a flush based
on memtable_cleanup_threshold. Cassandra stops accepting writes when the limit is
exceeded until a flush completes.
4.5 Testing
To test read performance of Cassandra, heap memory must be populated. Heap
memory is populated using Cassandra stress tool. 50 million write requests are sent all
around the nodes and heap memory is populated. After making sure that all nodes are
populated, read requests are sent to every node uniformly. Read requests are increased
by 5000 req/sec for every 5 minutes starting from 5000 req/sec to 30000 req/sec. This is
repeated for every configuration. To collect performance metrics for every 5 minutes
our tool must be running in the all three nodes. Key cache size increased after 10
iterations and experiment is repeated. The data collected is analyzed and best possible
key cache size is defined. This key cache size is kept constant and key save time period
is configured to reduce cold start time. To understand how Cassandra behaves with
change in key cache save time period. This test is conducted twice. Once immediately
after populating database and second test two hours after populating the data base.
Write performance is tested by changing configurations of memTable. First memory
allocation is tested three different configurations. This test is made by sending 50
Million write requests to the cluster. The data written is replicated on all three nodes
using replication factor three. The tool is executed in background and captures the
metrics for every 5 minutes. After every test, the data in all three nodes is deleted to
make sure the results obtained are not maculated by previous data stored. This processes
is repeated for every configuration. The metrics like write request rate, disk space used
and cache memory are used to analysis. This processes is repeated with other
configuration parameters.
Following a sequence while testing parameters will save time and energy because
all the configuration parameters are dependent on each other. Testing timeline is
explained in the Figure 6.
26. 24
Figure 6 TEST Timeline
4.6 Monitoring Metrics
There are three monitoring tools used to in this experiment. Two of them
are to log the data and one for monitoring the cluster on real time. It is important
to monitor the cluster real time because, testing the cluster with a high load might
crash a node and end up losing all the information. We also log the data for
extensive analysis on output and Cassandra behavior.
4.6.1 OpsCenter
Datastax Community AMI provides a real-time monitoring tool called OPS center.
Ops centers gets metrics from every node and displays on wen GUI on a remote host.
Ops Center must be installed in every node. To download Datastax Ops Center from
internet Datastax community repository key must be added to local repository. Using
that key package can be installed in the node. Before starting OpsCenter stop Cassandra.
Update system and install OpsCenter as super user.
Cassandra has an in built feature called Cassandra-metrics. Cassandra-metrics logs
performance metrics of every on in JMX memory and this can be retrieved by any java
based monitoring tool.
OpsCenter has its own advantage and disadvantages. OpsCenter[28] provides
realtime metrics and offers a very convenient web interface to select between metrics.
It can only generate graphs in time series and data cannot be logged.
4.6.2 Cassandra metrics collector:
It becomes difficult to compare between two configurations. So, an open source
monitoring tool called cassandra-metrics-collector on git hub is used. The source code
is edited and a new tool is developed which can collect data and log them in a text
file.
27. 25
Figure 7 Monitoring tool architecture
Before monitoring metrics, we must learn how and which metrics are effected by
changing parameters in key cache and memtable. This gives an overview of metrics
list to be monitored.
For key cache configuration we monitor cassndra metrics like key hits, key
requests, read requests and time taken to attain maximum hit rate.
We should also monitor system metrics like CPU utilization, disc throughput. These
metrics are collected for every five minutes. The time period to collect metrics and type
of metrics to be collected can be defined in the tool. OpsCenter collects all the metrics.
For each Memtable configuration, the metrics to be monitored are disk write through
put, average number of bytes compacted per sec and disc space used.
4.6.3 Node Tool Utility
Node tool utility helps the tool developed to collect metrics like hit rate, read and
write latency. It is command a line interface. So, this makes it more convenient to use
on a EC2 instance. Node tool utility is a package that comes along with Cassandra and
provides multiple functions like repair, rebuilt and monitor nodes.
In the tool developed to monitor Cassandra metrics also uses node tool by logging
values of metrics like hit rate and time at that instance.
The commands used and sample outputs are provided in the Appendix.
4.6.4 IOStat
IOstat[29] is command line package comes pre-installed in Ubuntu 12.04 used to
measured system performance metrics like disk through put and and OS load. This
package is used to in our tool to log system metrics in a text file. This package is used
because it has command line interface which makes working on AWS instances. It also
quick in getting results.
All the commands used and metrics logged using tool are provided in the Appendix.
28. 26
5 RESULTS
5.1 Keycache:
Keycache memory has three configurable parameters out of which keycache size
and key cache save period are important keycache size helps to increase the hit rate and
keycache time to store keys decreases the time of cold start.
5.1.1 Keycache size
Keycache size is tested in four configurations these four configurations are selected
according to heap size as we have selected m3.large instance we will get heap size of 2
GB which has to be shared by memTables and cache memory so the configurations are
divided as following default, 1/8th
of heap size, 1/4th
of heap size, ½ of heap size.
5.1.1.1 Default configuration
After keycache is populated with default results it is stressed with 10000 read
requests per second for five minutes and hit rate is noted as 0.331 which is the minimum
hit rate of the test. The read requests are hiked by 10000 requests per second then the hit
rate is observed. The observation showed that hit rate is increased by 0.2 percentile
approximately and with the hike of other 10000 requests per second the maximum hit
rate is attained for the default configuration which is 0.771. the tests are stopped at 30000
requests per second because the hit rate should know improvement after that with the
hike of read requests. For every hike of 10000 request per second CPU utilization and
read disk throughput are logged the CPU utilization at 10000 read requests per second
is noted as 3.42 and read throughput is noted as 9.36. At maximum hit rate CPU
utilization is noted as 11.3 and disk read throughput is noted as 10.2.
Table 2 Key Cache Size Default Conf. Result
Rate of
requests
CPU Load Disc read
through put
Hit rate Time to
achieve hit rate
10000 3.42 9.36 0.331 2
20000 5.77 9.88 0.419 3
30000 11.3 10.2 0.771 5
From the above table we can observe that hit rate is not very efficient on default
configuration. And also cold start is longer than expected at 30000 req/sec. But CPU
load and disk read throughput are very low which gives us advantage of using more
system resource for other configuration upgrades.
5.1.1.2 Performance with 1/8th
Heap size
Before testing keycache memory with 200mb size, its previous data is deleted and
cache memory is repopulated the test environment remains similar with the previous
test. The results of the test are as below.
29. 27
At 10000 requests per second the hit rate is 0.341 percentile and at 20000 requests
per second the hit rate is 0.7148 and 30000 requests per second 796. The hit rate has
showed a significant improvement than the previous test results but it is not efficient
enough to finally conclude the advantage of having low cache memory we have also
noted down CPPU utilization and disk through put the CPU load is noted as 4.50 at
10000 requests per second and 7.98 at 20000 requests per second and 15.66 at 30000
requests per second. The read throughput is 9.6, 12.4, 12.7 for 10000 req/sec, 20000
req/sec and 30000req/sec respectively.
Table 3 200MB Key Cache size
Rate of
requests
CPU Load Disc read
through put
Hit rate Time to
achieve hit rate
10000 7.42 9.6 0.303 5
20000 12.77 12.4 0.567 14
30000 15.66 12.7 0.789 20
From the above results it is observed that the hit rate has improved significantly at
20000 req/sec but at 30000 req/sec it is not satisfactory. The CPU utilization and disk
utilization are increased they are not at medium load so the risk of increasing cache
memory is considered for the next test.
5.1.1.3 Performance with 1/4th
Heap size
As we have scope to use more system resource the cache size is reduced to 500mb.
The test environment remains same from the previous test. The results are logged as
following, the hit rate was 0.51 at 15000 read requests per second and it elevated to
0.812 when read requests reached to 30000 requests per second this is a very significant
and effective value of hit rate but this configuration must not be concluded as a best
value for parameter.
Table 4 500MB Key Cache size
Rate of
requests
CPU Load Disc read
through put
Hit rate Time to
achieve hit rate
10000 8.15 9.36 0.368 9
20000 12.77 19.4 0.701 17
30000 24.44 26.7 0.820 36
To also make sure that the system resources are used efficiently and the load is
healthy the following results are considered the CPU load was 24.4 at maximum and
20.14 at minimum. The read throughput was 26.7 at maximum and 19.3 at minimum the
results proves that 500MB is healthy and efficient configuration with maximum hit rate
of 0.82 but a cold start of 45 minutes is observed in the above graph. From the previous
test results it is also observed that cold-start is increasing with increase in cache size.
5.1.1.4 Performance with 1/3th
Heap size
To find out the maximum hit rate that can be achieved with by using more system
resources we conduct the following tests with 700MB of cache size keeping the test
environment similar iterations are repeated like the previous tests. Maximum hit rate of
0.897 is achieved but with the cost of high CPU load and disk read throughput.
30. 28
Table 5 700MB Key Cache size
Rate of
requests
CPU Load Disc read
through put
Hit rate Time to
achieve hit rate
10000 9.4 11.0 0.399 12
20000 26.7 37.6 0.812 24
30000 32.1 42.1 0.891 44
The CPU load is noted as 32.1 at maximum and read throughput as 42.1 at
maximum. This is not a very healthy CPU utilization so 700MB cache memory cannot
be recommended for high performance utilization. The cold start also kept increasing to
50 minutes. This will reduce Cassandra capacity to handle high read requests rate.
5.1.1.5 Performance with 1/2th
Heap size
At 1 Giga byte cache size before starting stress test make sure that node can handle
high system resources and still run. For research purposes the tests are made at 1 Giga
byte cache memory even when CPU utilization and disk throughput are very high and
unhealthy.
Table 6 1000MB Key Cache Size
Rate of
requests
CPU Load Disc read
through put
Hit rate Time to
achieve hit rate
10000 12.9 12.1 0.451 16
20000 32.9 36.6 0.798 35
30000 46.7 41.2 0.920 62
The maximum hit rate attained with this configuration was 0.92 which is a good
value but not a good improvement from the previous configuration the maximum load
CPU handled was 46.7 which is not worthy value for the achieved hit rate this might
also results the system to crash or the node to go down at high read heavy workloads.
5.1.2 Key cache save time period
Configuring this parameter should decrease cold start time. So, while configuring
this parameter cold start is tried to reduce as much as possible keeping the rate constant
These values of these parameter are defined in seconds. This test is carried out with
four values, keeping key cache size 500MB throughout the test. Configuring this will
only show affect depending on number of test runs. So read requests are sent twice with
time difference of two hours.
This is the default value set by Cassandra. So, the results obtained from previous
tests are not very different from results obtained in this test.
Table 7 Deafult Key save time
4hours
Rate of
requests
CPU Load Disc read
through put
Hit rate Time to
achieve hit rate
10000 8.15 9.36 0.368 9
20000 12.77 19.4 0.701 17
30000 24.44 26.7 0.820 36
31. 29
Test2
10000 7.09 11.87 0.331 8
20000 8.37 18.63 0.712 15
30000 19.72 19.39 0.839 32
Table 8 Tested Key save time period
5hours
Rate of
requests
CPU Load Disc read
through put
Hit rate Time to
achieve hit rate
10000 8.09 9.36 0.352 8
20000 11.21 18.12 0.714 14
30000 25.26 24.7 0.827 27
Test2
10000 3.09 9.676 0.388 5
20000 11.48 18.09 0.733 12
30000 20.56 24.35 0.833 18
5.1.2.1 3 hours
Rate of
requests
CPU Load Disc read
through put
Hit rate Time to
achieve hit rate
10000 7.09 9.47 0.313 10
20000 10.91 12.12 0.701 13
30000 25.79 21.8 0.866 32
Test2
10000 4.32 9.50 0.333 6
20000 12.26 12.76 0.793 13
30000 22.12 22.80 0.862 24
5.2 memTable:
5.2.1 Heap Memory Allocation:
The tests of three heap memory allocations are done by sending 50 million write
requests. The results of heap buffer are as follows the total number of compactions is
0.98 on average which is considered to be normal and efficient for the number of write
requests for the mem cache memory used is 4627.74mb which remained constant
throughout the test this gives us that a conclusion that the utilized cache memory for
memtable is perfectly used. The write rate throughout the test remains as 21222 requests
per second approx.
The total requests utilized for writing 5million requests is 73 Giga byte which is less
compared to half heap buffer and heap objective. The total number of compactions in
off heap buffer is 0.55 /sec which is very lower than heap buffer. Off heap objective end
up showing low compactions than off heap buffer which is 0.41 per second.
The OS loads are 13.03,12.75 and 13.01 for heap buffer, off heap buffer and off
heap objectives respectively observing OS load of three tests it is considered that
changing heap memory allocation does not affect CPU utilization however it effects disk
space used. The disk space of heap buffer is 73Giga byte and off heap buffer is 66 Giga
byte which is least of three tests and half heap objective is 78Giga byte, highest of three.
Considering these results we choose heap buffer as memory allocation because it
showed better compactions and higher write throughput.
32. 30
Table 9 Memory allocation Cassandra Metrics
Cassandra Metrics
Memory
type
Write Req/sec
(Avg.)
Write
Latency
No.of
compactions
Bytes
Compacted
SStables
Heap buffer 21222 153.1 4 /sec 3.2 MB/sec 321
Offheap
buffer
20577 201.8 6 /sec 3.6 MB/sec 443
Offheap
Objects
19778 315.6 6 /sec 3.2 MB/sec 351
Table 10 Memory allocation System metrics
System Metrics
Memory type OS: Load Write
Throughput
Disk space Cache memory
used
Heap buffer 13.03 8.2 Mbps 73 GB 4627.74 MB
Offheap buffer 12.75 7.8 Mbps 66 GB 4013.65 MB
Offheap
objectives
13.1 7.5 Mbps 78 GB 4570.00 MB
5.2.2 MemTable Flush Writer
MemTable flush writers are tested with four configurations the configuration values
are selected depending on the disk cores. The default configuration is 8 because the
number of disk cores provided by amazon wed server is 8. As we have used solid state
drive as storage device we have the advantage of increasing number of flush writers
more than 8. When memtable flush writers is set to 4 the disk space used has
significantly decreased to 66Giga bytes which is least of four configurations SStable
count has increased to 831.19 tables which is highest of all test results however disk
write throughput remains around 10mb per second for every configuration OS load have
also not showed much difference for four configurations.
Table 11 Number of Flush Writers Cassandra metrics
Cassandra Metrics
Number of
Flush writers
Operation
Time
Write
Latency
Write
Requests
rate
(req/sec)
Bytes
Compacted
SStables
4 0:40:25 315.88 19877.63 11.15 MB/sec 831.99
8 0:39:14 274.45 22398.00 13.90 MB/sec 521.64
10 0:24:27 263.59 34419.04 24.8 MB/sec 129.39
Table 12 No. of Flush writers System metrics
System Metrics
Number of
Flush writers
OS: Load Write
Throughput
Disk space Cache memory
used
4 11.98 10 Mbps 66 GB 4539.12
8 11.75 10 Mbps 75 GB 4719.36
10 8.45 11 Mbps 78 GB 4730.09
33. 31
The ability of Cassandra to handle number of write requests per second has
increased with increasing in the number of memtable flush writers. This helped in
decreasing operation time. The bites compacted per second has increased with
increasing in the configuration value but this resulted in high disk space utilization.
5.2.3 MemTable Cleanup Threshold
After memTable flush writers it is easy to test memTable cleanup threshold because
they are mathematically related. MemTable cleanup threshold is set to 0.11 by default.
For better performance we increase the threshold value, increasing the threshold value
in multiple memTable flushes and concurrent operations the set of testing parameters
are 0.11, 0.3, 0.5 and 0.05.
MemTable cleanup threshold is set 0.11 which is default value assigned by
Cassandra and 50 million write requests are send. Cassandra could handle 21226 write
request per second with default configuration of cleanup threshold. The number of
compactions per minute was 6 on average. The maximum write latency was 912.3 and
the operation time was 39 minutes 20 seconds with increasing the threshold value the
ability of Cassandra to handle write requests rate have decreased gradually. This also
resulted in poor disk management and ended up story more data. The CPU load was
constant throughout the test read throughput slightly varied. The memory cached by the
system was 4670mb this improved to 5139 when cleanup threshold was decreased to
0.05 but the write latency showed a dramatic difference between every configuration.
The number of SS tables used have also increased with increasing in threshold value the
operation time decreased to 24 minutes and 27 seconds with the highest threshold value.
Total byes compacted per second increased with decreasing threshold value.
Considering all the above metrics it is better to leave cleanup threshold value in the
default configuration for heavy data but to optimize read performance while reading old
data considering higher threshold values will be more efficient theoretically.
Table 13 memTable Clean Up Cassandra metrics
Cassandra Metrics
memTable
Cleanup
Threshold
Operation
Time
Write
Latency
Write
Requests
rate
(req/sec)
Bytes
Compacted
SStables
0.05 0:39:52 315.45 20125.13 12.25 MB/sec 849.64
0.11 0:32:21 223.43 21977.54 17.44 MB/sec 362.89
0.3 0:27:27 263.8 31342.58 27.90 MB/sec 130.19
0.5 0:22:15 123.98 35426.82 24.28 MB/sec 121.47
Table 14 memTable Clean Up System metrics
System Metrics
memTable
Cleanup
Threshold
OS: Load Write
Throughput
Disk space Cache memory
used
0.05 12.01 10 Mbps 71 GB 4611.92
0.11 11.07 10 Mbps 77 GB 4691.66
0.3 9.01 11 Mbps 78 GB 4779.64
0.5 7.78 11 Mbps 78 GB 4840.00
34. 32
5.2.4 File Cache Size
By default, Cassandra allocates 1/4th
of its heap memory as file cache size. Changing
file cache size will affect the number of SS tables created in our test it didn’t show much
changes in performance in the change in configuration. So we also read performance
analysis for this configuration. The final analysis of read performance was as following
the write requests were able to handle more cache memory than before. The OS load has
increased a little bit for every configuration but the read throughput and write throughput
remains constant throughout the test. This showed effect on key cache memory as well
by decreasing the capacity to handle read keycache read request.
5.3 Data Analysis
5.3.1 Read Performance:
Read performance evaluated in this experiment using two key metrics hit rate and
cold start time. Behavior of hit rate and cold start with change in key cache
5.3.1.1 Hit Rate
The number of successful write requests in a second is called hit rate. In the graph
bellow it is plotted with hit rate on the y axis and OS load on the x axis at different
configurations. From the graph it learnt that the hit rate increases with increase in key
cache size. But OS load also has similar relation between key cache size. This is because
key cache uses heap memory to save data eventually occupying physical memory and
block systems running processes.
Keycache hit rate increased with increase in keycache size until 700mb i.e., 1/3rd
of
the heap size after that even though the cache size is increased the hit rates were limited
to 0.9 to (approx). even though 700mb is considered as a higher value for achieving
higher hit rates CPU load while using 700mb cache memory was not feasible. This made
us to choose 500mb cache size for further procedures.
Figure 8 Hit rate
92MB
200MB
500MB
700MB
1000MB
0.76
0.78
0.8
0.82
0.84
0.86
0.88
0.9
0.92
0.94
0 10 20 30 40 50 60
Load VS Hit rate
35. 33
5.3.1.2 Cold Start
The ability of keycache memory to handle larger cache read requests decreased with
increase in cache size so every time when the Cassandra is rebooted with 500mb cache
size it is taking 45 minutes or more to achieve maximum hit rate. To solve this problem,
we configured keycache save time period to 5 hours this help to store keys for more time
than usual before being flushed, so Cassandra was able to handle more read requests and
achieve better hit rates if it was rebooted with in comparatively long time. Rebooting in
short time did not affect hit rate anyway.
If column keys are stored in the cache memory for longer period of time, as shown
in section 5.1.2 , it is easy for Cassandra to read requests in multiple runs and decreases
the time achieve the hit rate.
Figure 9 Key save time period
5.3.2 Write Performance:
To analyses write performance and its effect on system metrics, disk write
throughput and disk space used is compared with cache memory used. This is done
processes is used for performance evaluation because cache memory used is physical
memory. Using physical memory results in losing possibility to allow other system
processes. By definition, OS load is number of processes left in queue. So, cache
memory used and OS load are proportional. For Disk Write through put, write request
rate is measured. This done because in our observation the two metrics showed direct
relation. It is more reliable and easy to understand difference between high numeric
values. If SSTables are flushed at different threshold values, it shows impact on
compaction. So, this results in change in disk space used.
5.3.2.1 Disk Write Throughput
Disk write throughput increased along with rate of write request sent to cluster. After
observing the different metrics and their behavior with change in parameters, Disk write
3Hours 4 Hours 5 Hours
6 Hours
0
5
10
15
20
25
30
35
40
45
0.9 0.799 0.813 0.802
OS load Diskthroughput Series2
36. 34
throughput and rate of write requests are found to be dependent. So, we compared write
requests rate with three parameters with different values and evaluated the result.
Changing memory allocation did not show much effect on the request rate. It
remained approximately similar with all three configurations mentioned in the graph.
Write request rate increased with adding number flush writers. This is because the
number of operations done to flush data from memTable also increased. So, this results
memTable to provide more space of new requests. As memTable clean up threshold is
mathematically related it showed similar output
Figure 10 Write Requests
5.3.2.2 Disk Space Used
The amount of disk space used depends on how much data is stored in physical
memory before entering into disk. The data stored in physical memory is virtually
memTables. If these memTables are not flushed and size and number of ssTables
decreases.
In our experiment the threshold value to flush memTable is increased. This resulted
in flushing less data and storing all the data in physical memory. Populating physical
memory is not recommended as it eliminates the possibility of increasing the heap size
and block other system activities.
heap buffer
offheap
Buffer
offheap
Objects4
8
10
0.05
0.11
0.3
0
5000
10000
15000
20000
25000
30000
35000
40000
1 2 3
Requests / Sec
Write requests
Memory type Number of Flush writers
memTable Cleanup Threshold Poly. (Number of Flush writers)
37. 35
Figure 11 Disk memory used
5.3.2.3 Cache memory used
As memTable memory is stored in disk when configured to Off heap buffer, cache
memory is not used by memTable. This helps to other system activities to use that
memory. So, the cache memory used is every less in off heap configuration.
5.4 Draft model:
For this draft model above data analysis is used to define Cassandra configuration
for the m3.large system specification. The recommended configuration and results of
draft model are presented in this section.
Heap
Buffer
Offheap
Buffer
Offheap
Objectives
4
8
10
0.05
0.11
0.3
1 2 3
62
64
66
68
70
72
74
76
78
80
GB
Disc Space Used
Memory type Number of Flush writers
memTable Cleanup Threshold Poly. (memTable Cleanup Threshold)
Heap buffer
Offheap
Buffer
Offheap
Objectives4
8 10
0.05
0.11
0.3
3600
3800
4000
4200
4400
4600
4800
5000
1 2 3
Axis Title
Cache Memory used
Memory type Number of Flush writers memTable Cleanup Threshold
38. 36
5.4.1 Recommended Configuration
To improve read performance the key cache size is increased to 500MB from 92MB.
This makes Cassandra to store more keys and find the location of the data quickly. This
not increased to 1000MB because it over loaded physical memory and blocked system
processes. The save time period of the key is increased from 4 hours to 5 hours. This
made Cassandra achieve maximum hit rate quickly.
The write performance is increased by configuring memTable. The threshold of
flush writer is set to default because it is directly related to number if flush writers. The
flush writers are improved from 8 to 10. It is chosen 10 because we are using an it is
capable of using 10 flush writers. This makes Cassandra flush more memTable
providing space for new write requests. This improved disk write through put. Save the
disk space and decreases the cache memory used the memory allocation is set to off
heap.
Parameter Default Recommended
Key cache size 92MB 500MB
Key save time period 4 hours 5 hours
Memory allocation Heap Buffer Off heap Buffer
MemTable flush threshold 0.11 0.11
No.of flush writers 8 10
5.4.2 Performance
After changing Cassandra configurations to recommended values, it is tested in
three test case scenarios. The read heavy, write heavy and mixed. With ready heavy 50
Million read requests are sent to cluster and distributed among the node equally. Before
sending read requests, the nodes and cache memory is populated. Entire testing
processes mentioned Section 4.5, is repeated for read performance evaluation.
Read heavy load is evaluated using metrics like hit rate and disk throughput
compared with OS load and time required to achieve maximum hit rate. The draft shows
high OS load and disk through put. OS load and disk through put showed approximately
linear relation throughout tests. To support this statement, results are presented in
appendix. Hit rate also improved compared to default Cassandra configuration but time
to achieve that hit rate is also longer than default configuration. As mentioned in Section
5.1.2 it is reduced by configuring.
Write performance evaluated with similar processes mentioned in Section 4.5 but
configurations are set to recommended values are not changed. To evaluate performance
OS load, Disk Write Throughput and Disk space used are compared. OS load decreased
and Disk throughput increased. This because the cache memory use is decreased by
allocating memory to off heap and allowing system activities to use cache memory.
Increasing number of flush writers from 8 to 10 made Cassandra to flush 10 tables
a time. So, the more tables flushed to disk the more disk throughput we get. Changing
number of flush writers changes flush threshold value. So, compactions change and
number of keys and time stamps stored decreased lead to less disk space useage.
Table 15 Draft model performance
Read heavy OS Load Disk read throughput
(MBps)
Hit rate Time to
achieve
Default 9.2 9.8 0.698 6.2 min
39. 37
Recommended 24.6 25.1 0.813 15.3 min
Write heavy OS Load Disk write throughput
(MBps)
Disk space used
Default 11.75 8.2 75GB
Recommended 8.45 11.3 73GB
When mixed load stress is request from Cassandra stress tool, user is supposed to
mention the ratio between read and write. In our test case we select ratio as 5:5. This
means read and write requests are divided equally in 50 Million requests.
Key system metrics are observed to evaluate performance of the draft model are OS
load, Disk write and read throughput, Disk space used and hit rate.
Mixed load OS load Read
throughput
Write
throughput
Disk space
used
Hit rate
Default 11.9 8.4 7.2 50GB 0.715
Recommended 12.8 11.5 10.0 47GB 0.864
40. 38
6 CONCLUSION:
The main purpose of this thesis is to evaluate read and write performance of
Cassandra with change in configuration and derive a draft model that shows better
performance than default Cassandra model.
The configurations that effect Cassandra read and write performance are key-cache
and memTable. So, these parameters are chosen to configure for performance
optimization. The experimentation conducted in thesis clearly shows the advantages of
configuring those parameters and proves the fact that Cassandra is highly scalable. This
thesis also helps to understand multiple functionalities of Cassandra and tools it comes
with.
The performance evaluation showed that increasing key cache size improved read
performance. To support this statement, the key read performance metrics like hit rate
and disk through put are analyzed and result are presented in the document. Increasing
key cache save time period also slowed improvement in read performance. This did not
increase disk through put or hit rate but decreased the time to reach the maximum hit
rate.
The write performance is also increased with change memTable configurations.
Write performance in this thesis is evaluated using multiple write metrics but two key
performance metrics are disk space used and write request rate. Write request request
rate increased with increases in number of flush writers and disk space used is decreased
with change in heap memory allocation.
The proposed draft model showed improved read and write performance metrics
with considerably less effect on system metrics. This is because the draft model uses
less cache memory and stores less keys and timestamps, which decreased amount of
disk space used. Draft model also has more space to save column keys and stores them
for longer time period. So, draft model tends to achieve high hit rate and disk throughput.
6.1 Future work
In this thesis, only Cassandra is used to for performance optimization but there are
new Big data platforms which can be evaluated. Not just performance evaluation but
QoS can also be evaluated for these big data system and find the gap for researchers and
developers to solve.
Presently, research is carried on key and memTables but considering other
parameters like compaction strategy and compression types will optimize Cassandra
performance further.
41. 39
REFERENCES
[1] “The Apache Cassandra Project.” [Online]. Available: http://cassandra.apache.org/.
[Accessed: 04-May-2016].
[2] V. Mishra, Instant Apache Cassandra for Developers Starter. Packt Publishing, 2013.
[3] “Elastic Compute Cloud (EC2) Cloud Server & Hosting – AWS,” Amazon Web
Services, Inc. [Online]. Available: //aws.amazon.com/ec2/. [Accessed: 13-Feb-2016].
[4] “Dropbox CEO: 1 billion files uploaded every day,” SlashGear, 27-Feb-2013.
[Online]. Available: http://www.slashgear.com/dropbox-ceo-1-billion-files-uploaded-
every-day-27271728/. [Accessed: 04-May-2016].
[5] “YouTube Statistics – Statistic Brain.” .
[6] V. Mishra, Beginning Apache Cassandra Development. Apress, 2014.
[7] M. Chalkiadaki and K. Magoutis, “Managing Service Performance in the Cassandra
Distributed Storage System,” in 2013 IEEE 5th International Conference on Cloud
Computing Technology and Science (CloudCom), 2013, vol. 1, pp. 64–71.
[8] P. Bagade, A. Chandra, and A. B. Dhende, “Designing performance monitoring tool
for NoSQL Cassandra distributed database,” in 2012 International Conference on
Education and e-Learning Innovations (ICEELI), 2012, pp. 1–5.
[9] B. R. Chang, H.-F. Tsai, Y.-A. Wang, and C.-F. Kuo, “Intelligent Adaptation to in-
Cloud NoSQL Database Remote Backup Between Data Centers,” in Proceedings of the
ASE BigData & SocialInformatics 2015, New York, NY, USA, 2015, pp. 4:1–4:6.
[10] M. Brown, “Preface,” in Learning Apache Cassandra, Packt Publishing, 2015.
[11] tutorialspoint.com, “Cassandra Data Model,” www.tutorialspoint.com. [Online].
Available: http://www.tutorialspoint.com/cassandra/cassandra_data_model.htm.
[Accessed: 05-May-2016].
[12] “ebrary ProQuest Reader.” [Online]. Available:
http://site.ebrary.com.miman.bib.bth.se/lib/bthbib/reader.action?docID=10790284&pp
g=3. [Accessed: 05-May-2016].
[13] A. Shackelford, Beginning Amazon Web Services with Node.js. Apress, 2015.
[14] C. Radford, “Challenges and solutions protecting data within Amazon Web Services,”
Netw. Secur., vol. 2014, no. 6, pp. 5–8, Jun. 2014.
[15] N. Padalia, Apache Cassandra Essentials. Packt Publishing, 2015.
[16] “Amazon Virtual Private Cloud (VPC) – Amazon Web Services,” Amazon Web
Services, Inc. [Online]. Available: //aws.amazon.com/vpc/. [Accessed: 11-May-2016].
[17] C. Y. Kan, Cassandra Data Modeling and Analysis. Packt Publishing, 2014.
[18] “WritePathForUsers - Cassandra Wiki.” [Online]. Available:
https://wiki.apache.org/cassandra/WritePathForUsers. [Accessed: 11-May-2016].
[19] “ebrary ProQuest Reader.” [Online]. Available:
http://site.ebrary.com.miman.bib.bth.se/lib/bthbib/reader.action?docID=10490864.
[Accessed: 18-May-2016].
[20] “Data Caching | Learn Cassandra.” [Online]. Available:
https://teddyma.gitbooks.io/learncassandra/content/caching/data_caching.html.
[Accessed: 11-May-2016].
[21] M. Brown, “Preface,” in Learning Apache Cassandra, Packt Publishing, 2015.
[22] “MemtableSSTable - Cassandra Wiki.” [Online]. Available:
https://wiki.apache.org/cassandra/MemtableSSTable. [Accessed: 18-May-2016].
[23] “Configuring firewall port access.” [Online]. Available:
https://docs.datastax.com/en/cassandra/2.1/cassandra/security/secureFireWall_r.html.
[Accessed: 18-May-2016].
[24] “EC2 Instance Types – Amazon Web Services (AWS),” Amazon Web Services, Inc.
[Online]. Available: //aws.amazon.com/ec2/instance-types/. [Accessed: 12-May-2016].
[25] E. Hewitt, Cassandra: The Definitive Guide. O’Reilly Media, Inc., 2010.
[26] “The cassandra.yaml configuration file.” [Online]. Available:
https://docs.datastax.com/en/cassandra/2.0/cassandra/configuration/configCassandra_y
42. 40
aml_r.html#reference_ds_qfg_n1r_1k__key_cache_size_in_mb. [Accessed: 11-May-
2016].
[27] M. Nicola and M. Jarke, “Performance modeling of distributed and replicated
databases,” IEEE Trans. Knowl. Data Eng., vol. 12, no. 4, pp. 645–672, Jul. 2000.
[28] “OpsCenter and DevCenter | DataStax Academy: Free Cassandra Tutorials and
Training.” [Online]. Available: https://academy.datastax.com/downloads/ops-center.
[Accessed: 18-May-2016].
[29] “iostat.” [Online]. Available: http://www.freebsd.org/cgi/man.cgi?iostat. [Accessed:
13-Jun-2016].
43. 41
7 APPENDIX
AWS dashboard and configurations:
Figure 12 Virtual Private Cloud Dashboard
Figure 13 Security group
Figure 14 Keyspace Used