PPT - Big Data Open Source Software and Projects

Big Data Open Source Software
and Projects
ABDS in Summary X: Level 12
I590 Data Science Curriculum
August 15 2014
Geoffrey Fox
[email protected]
http://www.infomall.org
School of Informatics and Computing
Digital Science Center
Indiana University Bloomington
1)
2)
3)
4)
5)
6)
7)
8)
9)
10)
11)
12)
13)
14)
15)
16)
17)
HPC-ABDS Layers
Message Protocols
Distributed Coordination:
Security & Privacy:
Monitoring:
IaaS Management from HPC to hypervisors:
DevOps:
Interoperability:
Here are 17 functionalities. Technologies are
File systems:
presented in this order
Cluster Resource Management:
4 Cross cutting at top
Data Transport:
13 in order of layered diagram starting at
SQL / NoSQL / File management:
bottom
In-memory databases&caches / Object-relational mapping / Extraction Tools
Inter process communication Collectives, point-to-point, publish-subscribe
Basic Programming model and runtime, SPMD, Streaming, MapReduce, MPI:
High level Programming:
Application and Analytics:
Workflow-Orchestration:
In memory databases
(overlaps with persistence systems
in next group)
Memcached
• Memcached is a general-purpose distributed memory
caching system. It is often used to speed up dynamic
database-driven websites by caching data and objects in RAM to reduce the
number of times an external data source (such as a database or API) must be read.
• Memcached is free and BSD license open-source software
http://en.wikipedia.org/wiki/Memcached http://www.memcached.org/,
• Memcached runs on Unix-like (at least Linux and OS X) and on Microsoft Windows.
• Memcached's APIs provide a giant hash table distributed across multiple machines.
When the table is full, subsequent inserts cause older data to be purged in least
recently used (LRU) order.
• The size of this hash table is often large. It is limited by available memory across a
large number of servers in a data center.
– Where high volume, wide audience web publishing requires it, this may stretch to many
GB.
– Memcached can be equally valuable for situations where either the number of requests
for content is high, or the cost of generating a particular piece of content is high
• Memcached was originally developed by Danga Interactive for LiveJournal, but is
now used by many other systems: Wikipedia, Flickr, Bebo, Twitter, Typepad,
Yellowbot, Youtube, WordPress.com, Craigslist, Mixi
– Google App Engine, AppScale, Microsoft Azure and Amazon Web Services also offer a
Memcached service through an API.
• http://pdos.csail.mit.edu/6.824-2013/papers/memcache-fb.pdf describes how
memcached is used in Facebook to build a distributed key-value store like Dynamo,
Riak, Voldemort
Redis
• Redis http://redis.io/ http://en.wikipedia.org/wiki/Redis
is an BSD license open-source, networked, in-memory,
key-value data store with optional durability.
• The name Redis means REmote DIctionary Server
• The development of Redis has been sponsored by Pivotal Software since
May 2013; before that, it was sponsored by VMware.
• In its outer layer, the Redis data model is a dictionary which maps keys to
values. One of the main differences between Redis and other structured
storage systems is that Redis supports not only strings, but also abstract
data types such as:
– Lists of strings
– Sets of strings (collections of non-repeating unsorted elements)
– Sorted sets of strings (collections of non-repeating elements ordered by a floatingpoint number called score)
– Hashes where keys and values are strings
• The type of a value determines what operations (called commands) are
available for the value itself.
• Redis supports high-level, atomic, server-side operations like intersection,
union, and difference between sets and sorting of lists, sets and sorted sets.
Hazelcast
• Hazelcast http://hazelcast.org/
http://en.wikipedia.org/wiki/Hazelcast is an
in-memory Open Source data grid based on Java.
– By having multiple nodes form a cluster, data is evenly distributed
among the nodes.
– This allows for horizontal scalability both in terms of available
storage space and processing power.
– Backups are also distributed in a similar fashion to other nodes,
based on configuration, thereby protecting against single node
failure.
• Typical use-cases for Hazelcast:
– Cache frequently accessed data in-memory, often in front of a
database
– Store temporal data like web sessions
– In-memory data processing/analytics
– Memcached alternative with protocol compatible interface
– Cross-JVM communication/shared storage
Ehcache
• Ehcache is a widely used open source Java distributed cache for
general purpose caching.
• It features memory and disk stores, replicate by copy and
invalidate, listeners, cache loaders, cache extensions, cache
exception handlers, a gzip caching servlet filter, RESTful and SOAP
APIs.
• Ehcache was originally developed by Greg Luck, starting in 2003. In
2009, the project was purchased by Terracotta, who provides paid
support.
– Terracotta actively develops, maintains, and supports Ehcache as a
professional open source project available under an Apache 2 license.
– In addition to the open source Ehcache edition, Terracotta
offers BigMemory for enterprise-grade in-memory data management
with high availability, worldwide 24x7 professional support, consulting,
and training services.
• In March 2011, the Wikimedia Foundation announced it would use
Ehcache to improve the performance of its wiki projects
• Ehcache integrates well with Hibernate
Apache Gora
• The Apache Gora http://en.wikipedia.org/wiki/Apache_Gora
http://gora.apache.org/ open-source software framework provides an inmemory data model and persistence for big data. Gora supports persisting to
column stores, key/value stores, document stores and RDBMSs, and analyzing
the data with extensive Apache Hadoop MapReduce support
– Java friendly (REST-style) API for mapping Java objects to and from NoSQL
technologies
– Implements in-memory database (IMDB; also main memory database system or
MMDB or memory resident database)
– Provides a generalization of ORM, which stands for Object Relation Mapping.
– Gora extends this concept to introduce Object-to-Datastore Mapping where the
underlying technological implementations rely mostly on non-relational data
modeling. In essence Gora provides storage abstraction for NoSQL technologies –
• Gora database/MapReduce support is as follows Oct 8 2014
–
–
–
–
–
–
–
Apache Avro 1.7.6
Apache Hadoop 1.0.1 and 2.4.0
Apache HBase 0.94.14
Apache Cassandra 2.0.2
Apache Solr 4.8.1
MongoDB 2.6
Apache Accumlo 1.5.1
Object Relational/Other Persistence
mechanisms Mapping
http://en.wikipedia.org/wiki/List_of_objectrelational_mapping_software
Hibernate, DataNucleus
•
•
•
•
DataNucleus http://en.wikipedia.org/wiki/DataNucleus (formerly known as
Java Persistent Objects JPOX) is an Apache 2 license open source project that
supports persistence to the widest range of datastores of any Java persistence software, supporting all
of the main object-relational mapping (ORM) patterns
DataNucleus Access Platform is a fully compliant implementation of the Java Data Objects (JDO) 1.0, 2.0,
2.1, 2.2, 3.0, 3.1 specifications (JSR 0012, JSR 0243) and the Java Persistence API 1.0, 2.0, 2.1
specifications (JSR 0220, JSR 0303, JSR 0338), providing transparent persistence of Java objects.
Hibernate ORM (Hibernate in short) http://en.wikipedia.org/wiki/Hibernate_(Java) is LGPL open source
object-relational mapping library for the Java language, providing a framework for mapping an objectoriented domain model to a traditional relational database. Hibernate solves object-relational
impedance mismatch problems by replacing direct persistence-related database accesses with high-level
object handling functions.
Hibernate's primary feature is mapping from Java classes to database tables (and from Java data types to
SQL data types). Hibernate also provides data query and retrieval facilities. It generates SQL calls and
relieves the developer from manual result set handling and object conversion. Applications using
Hibernate are portable to supported SQL databases with little performance overhead
Apache OpenJPA, EclipseLink
• OpenJPA is an open source implementation of the Java
Persistence API specification. It is an object-relational mapping (ORM)
solution for the Java language, which simplifies storing objects in databases.
• Kodo, a Java Data Objects implementation, was originally developed by
SolarMetric, Inc in 2001. BEA Systems acquired SolarMetric in 2005, where
Kodo was expanded to be an implementation of both the Java Data Objects
JDO (JSR 12) and Java Persistence API JPA (JSR 220) specifications.
– Later extended to JSR-317 Java Persistence 2.0
• In 2006, BEA donated a large part of the Kodo source code to the Apache
Software Foundation under the name OpenJPA.
• The donated source code will be the core persistence engine of BEA
Weblogic Server, IBM WebSphere, and the Geronimo Application Server.
• In May 2007, OpenJPA passed Sun's Technology Compatibility Kit compliant
with the Java Persistence API in versions 1 and 2
• Hibernate, EclipseLink (from Oracle), OpenJPA, DataNucleus have similar
functionalities
• https://s3-eu-west1.amazonaws.com/presentations2012/50_presentation.pdf compares -prefers open source EclipseLink but doesn’t look at different backends
ODBC, JDBC Standard
• JDBC http://en.wikipedia.org/wiki/Java_Database_Connectivity is a
Java-based data access technology (Java Standard Edition platform)
from Oracle Corporation. This technology is an API for the Java
programming language that defines how a client may access a
database. It provides methods for querying and updating data in a
database. JDBC is oriented towards relational databases. A JDBC-toODBC bridge enables connections to any ODBC-accessible data
source in the JVM host environment.
– First released in 1997
• ODBC (Open Database Connectivity) is a standard programming
language middleware API for accessing database management
systems (DBMS).
– ODBC was originally developed by Microsoft during the early 1990s,
Extraction Tools
Apache UIMA
•
•
•
•
•
•
UIMA Unstructured Information Management Architecture is an
OASIS standard http://en.wikipedia.org/wiki/UIMA and is the
only industry standard for content analytics.
Apache https://uima.apache.org/ implements this standard and in February 2011 a computer
from IBM Research named Watson used Apache UIMA and won a competition on Jeopardy!
against Jeopardy star Ken Jennings and undefeated Jeopardy champion Brad Rutter. Watson used
https://blogs.apache.org/foundation/entry/apache_innovation_bolsters_ibm_s
Processing 80 trillion operations (teraflops) per second, Watson accesses 200 million pages of
content against 6 million logic rules to "understand" the nuances, meanings, and patterns in
spoken human language, and compete in the trivia game show Jeopardy!. Contestants are
presented with clues in the form of answers, and must phrase their responses as questions within
a 5-second timeframe.
Hundreds of Apache UIMA Annotators and thousands of algorithms help Watson –which runs
disconnected from the Internet– access vast databases to simultaneously comprehend clues and
formulate answers. Watson then analyzes 500 gigabytes of preprocessed information to match
potential meanings for the question and a potential answer to the question.
Apache UIMA: standards-based frameworks, infrastructure and components that facilitate the
analysis and annotation of an array of unstructured content (such as text, audio and video).
Watson uses Apache UIMA for real-time content analytics and natural language processing, to
comprehend clues, find possible answers, gather supporting evidence, score each answer,
compute its confidence in each answer, and improve contextual understanding (machine learning)
– all under 3 seconds.
Apache Hadoop: software framework that enables data-intensive distributed applications to work
with thousands of nodes and petabytes of data. A foundation of Cloud computing, Apache
Hadoop enables Watson to access, sort, and process data in a massively parallel system (90+
server cluster/2,880 processor cores/16 terabytes of RAM/4 terabytes of disk storage).
Apache Tika
• Apache Tika http://tika.apache.org/ is a content analysis toolkit that
detects and extracts metadata and text content from various
documents - from PPT to CSV to PDF - using existing parser libraries.
• Tika unifies these parsers under a single interface to allow you to
easily parse over a thousand different file types.
• Tika is useful for search engine indexing, content analysis, translation,
and much more.
• Tika was originally a subproject of Apache Lucene (the major Apache
search system) and separated in 2007
• There is a parser http://tika.apache.org/1.6/parser.html and
detection interface http://tika.apache.org/1.6/detection.html that
define action of Tika in determines of documents and action required