The Apache Hadoop Ecosystem

Apache Hadoop, simply termed Hadoop, is an increasingly popular open-source framework for distributed computing.  It has had a major impact on the business intelligence / data analytics / data warehousing space, spawning a new practice in this space, referred to as Big Data.  Hadoop’s core architecture consists of a storage part known as Hadoop Distributed File System (HDFS) and a processing part called MapReduce.   It provides a reliable, scalable, and cost-effective means for storing and processing large data sets, and it does so like no other software frameworks before its time.

It is cost-effective and scalable because it is designed to run on commodity hardware servers that can be scaled from one to hundreds, or even thousands, therefore avoiding the cost of the expensive super-computers (which eventually hits limits).  With Hadoop, you are able to add commodity servers as needed without much difficulty at minimal costs.

It is reliable because all the modules in Hadoop are designed with a fundamental assumption that hardware failures will occur and these failures should be automatically handled in software by the Hadoop framework.

Beyond the core components, the Hadoop eco-system has grown to include a number of additional packages that run on top of or alongside the core Hadoop components, including but not limited to, Apache Hive, Apache Pig, Apache HBase, Apache Phoenix, Apache Spark, Apache ZooKeeper, Impala, Apache Flume, Apache Sqoop, Apache Oozie, Apache Storm, Apache Mahout, Ambari, Apache Drill, Tez, and others.  This post will serve as a quick look-up for the components of the eco-system to allow you to quickly identify what the components are and understand what they do.

Hadoop component Component Category Purpose / Usage
Hadoop The ecosystem The core Apache Hadoop framework is composed of the following modules:

  • Hadoop Common
  • Hadoop Distributed File System (HDFS)
  • Hadoop YARN
  • Hadoop MapReduce
Hadoop Common Software Libraries shared across the ecosystem Hadoop Common contains libraries and utilities needed by other Hadoop modules
Hadoop Distributed File System (HDFS) Distributed Storage HDFS is a distributed file system that is the foundational storage component of Hadoop and it sits on top of the file system of the commodity hardware that Hadoop runs on. It stores data on these commodity servers and provides high bandwidth and throughput across the cluster of servers.
Hadoop YARN Resource Management & Scheduling YARN (which stands for Yet Another Resource Negotiator) is a resource-management platform that manages computing resources in Hadoop clusters and uses them to schedule users’ applications.
Hadoop MapReduce Distributed Processing MapReduce is a programming and processing paradigm that pairs with HDFS for large scale data processing.

It is a distributed computational algorithm comprised of a Map() procedure and a Reduce() procedure that pushes computation down to each server in the Hadoop cluster.

The Map procedure performs functions such as filtering and sorting of data; while the Reduce() procedure performs summary / aggregate type operations on the data.

Hive MapReduce Abstraction / Analysis / Querying Apache Hive is a data warehouse infrastructure that provides an abstraction layer on top of MapReduce.  It provides a SQL-like language called HiveQL and transparently converts queries to MapReduce, Apache Tez, and Apache Spark jobs.

It can handle analysis of large datasets and provides functionality for indexing, data summarization, query, and analysis of the data stored in HDFS or other compatible file systems.

Pig MapReduce Abstraction / Analysis / Querying Pig is a functional programming interface that allows you to use a higher level scripting language (called Pig Latin) to create MapReduce code for Hadoop. Pig is similar to PL/SQL and can be extended using UDF’s written in Java, Python and other languages.

It was originally developed to provide analysts an ad-hoc way of creating and executing map-reduce jobs on very large data sets.

Ambari Monitoring & Management of Clusters Ambari is a web-based tool for provisioning, managing, and monitoring Apache Hadoop clusters. It includes support for many of the key components of the Hadoop eco-system, such as, Hadoop HDFS, Hadoop MapReduce, Hive, HCatalog, HBase, ZooKeeper, Oozie, Pig and Sqoop.

Ambari also provides a user-friendly dashboard for viewing cluster health and MapReduce, Pig and Hive applications, And it also provides features to diagnose the performance of the various components.

HBase Storage / database HBase is a non-relational (NoSQL) distributed, fast, and scalable database that runs on top of HDFS.  It is modeled after Google’s Big Table, providing BigTable-like capabilities to Hadoop, and is written in Java.

It provides fault-tolerant storage and retrieval of huge quantities of sparse data – such as top 10 out of 10 billion records or the 0.1% of recrods that are non-zero.

HBase features include compression, and in-memory operation.  HBase tables can be used as the input and output for MapReduce jobs run in Hadoop, and are accessed through APIs.

HBase can be integrated with BI and Analytics applications through drivers and through Apache Phoenix’s SQL layer. However, HBase is not a RDBMS replacement.

Hue Web GUI Hue is an open-source Web interface for end users that supports Apache Hadoop and its ecosystem.

Hue provides a single interface for the most common Apache Hadoop components with an emphasis on user experience. Its main goal is to have the users make the most of Hadoop without worrying about the underlying complexity or using a command line.

Sqoop Data Integration Sqoop, named from a combination of SQL+Hadoop, is an application with a command-line interface that pulls and pushes data from/to relational data sources, to/from Hadoop.

It supports compression, incremental loads of a single table, or a free form SQL query. You can also save jobs which can be run multiple times to perform the incremental loads. Imports can also be used to populate tables in Hive or HBase.

Exports can be used to put data from Hadoop into a relational database.

Several software vendors provide Sqoop-based functionality into their database and BI/analytics products.

Flume Data Integration Apache Flume is a distributed service for efficiently collecting, aggregating, and moving large amounts of log data (such as web logs or sensor data) into and out of Hadoop (HDFS).

It features include fault tolerance and a simple extensible data model that supports streaming data flows and allows for online analysis.

Impala Analysis / Querying Cloudera Impala is a massively parallel processing, low-latency SQL Query engine that runs on Hadoop and communicates directly with HDFS, bypassing MapReduce.

It allows you to run SQL queries in lower data volume scenarios on data stored in HDFS and HBase, and returns results much quicker than Pig and Hive.

Impala is designed and integrated with Hadoop to use the same file and data formats, metadata, security and resource management frameworks used by MapReduce, Apache Hive, Apache Pig and other Hadoop software, which allows for both large scale data processing and interactive queries to be done on the same system.

Impala is great for data analysts and scientists to perform analytics on data stored in Hadoop via SQL or other business intelligence tools.

Avro Data Integration Avro is a data interchange protocol/framework that provides data serialization and de-serialization in a compact binary format.

Its primary use is in Apache Hadoop, where it can provide both a serialization format for persistent data, and a wire format for communication between Hadoop nodes, and from client programs to the Hadoop services.

Storm Data Integration Apache Storm is a distributed computation framework, written predominantly in the Clojure programming language that moves streaming data into and out of Hadoop.

It allows for the definition of information sources and manipulations to allow batch, distributed processing of streaming data.

Storm’s architecture acts as a data transformation pipeline. At a very high level the general architecture is similar to a MapReduce job, with the main difference being that data is processed in real-time as opposed to in individual batches.

Oozie Workflow Builder Apache Oozie is a server-based workflow scheduling system, built using Java, to manage Hadoop jobs. It chains together MapReduce jobs, and data import/export scripts.

Workflows in Oozie are defined as a collection of control flow and action nodes. Action nodes are the mechanism by which a workflow triggers the execution of a computation/processing task. Oozie provides support for different types of actions including Hadoop MapReduce, HDFS operations, Pig, SSH, and email; and it can be extended to support additional types of actions.

Mahout Machine Learning Apache Mahout is a set of libraries for distributed, scalable machine learning; data mining; and mathematical algorithms that run primarily on the Hadoop, and focused primarily in the areas of collaborative filtering, clustering and classification.

Mahout’s core algorithms for clustering, classification and batch based collaborative filtering are implemented on top of Apache Hadoop using the map/reduce paradigm, but is not restricted to Hadoop-based implementations.

ZooKeeper Coordination ZooKeeper is a high-performance, high-availability coordination service for distributed applications. It provides a distributed configuration service, synchronization service, and naming registry for large distributed systems.

ZooKeeper is used by open source enterprise search systems like Solr.

Spark Data Integration, Processing, Machine Learning Apache Spark sits directly on top of HDFS, bypassing MapReduce, and is a fast, general compute engine for Hadoop.  It is said that Spark could eventually replace MapReduce because it provides solutions for everything MapReduce does, plus adds a lot more functionality.

It uses a different paradigm from MapReduce (synonymous to rows vs sets processing in SQL), and uses more in-memory capabilities which makes it typically faster than MapReduce.  In contrast to MapReduce’s two-stage disk-based paradigm, Spark’s multi-stage in-memory primitives provides performance up to 100 times faster for certain applications.

Spark is very versatile and provides a simple and expressive programming model that supports a wide range of applications, including ETL, machine learning, stream processing, and graph computation.

Spark requires a cluster manager and supports standalone (native Spark cluster), Hadoop YARN, or Apache Mesos; and also requires a distributed storage system such as Hadoop Distributed File System (HDFS), Cassandra, Amazon S3, or even custom systems; but it does support a pseudo-distributed local mode (for development and testing).

Spark is one of the most active projects in the Apache Software Foundation.

Phoenix Data Manipulation Apache Phoenix is a massively parallel, relational database layer on top of noSQL stores such as Apache HBase.

Phoenix provides a JDBC driver that hides the complexities of the noSQL store enabling users to use the familiar SQL to create, delete, and alter SQL tables, views, indexes, and sequences; insert, update, and delete rows singly and in bulk; and query data.

Phoenix compiles queries and other statements into native noSQL store APIs rather than using MapReduce enabling the building of low latency applications on top of noSQL stores.

Cassandra Storage / database Apache Cassandra is an open source, scalable, multi-master, high-performance, distributed database management system designed to handle large amounts of data across many commodity servers, providing high availability with no single point of failure.

Cassandra supports clusters spanning multiple datacenters, with asynchronous masterless replication allowing for low latency operations.

Solr Search Solr (pronounced “solar”) is an open source enterprise search platform, written in Java, and runs as a standalone full-text search server.

Its features include full-text search, hit highlighting, faceted search, real-time indexing, dynamic clustering, database integration, NoSQL capabilities, and rich document (e.g., Word, PDF) handling. Solr is designed for scalability and Fault tolerance with distributed search and index replication. Solr is a very popular enterprise search engine.

Solr has APIs and a plugin architecture that makes it customizable using various programming languages.

There is the flexibility to root the data being brought in by SQOOP and FLUME directly into SOLR to do indexing on the fly.  But you can also tell SOLR to index the data in batches.

MongoDB Storage / database MongoDB (from humongous) is an open-source, cross-platform document-oriented, NoSQL database. It uses a JSON-like structure, called BSON, with dynamic schemas which makes the integration of data in certain types of applications easier and faster.

MongoDB is one of the most popular type of database management systems, and is said to be the most popular for document stores.

Kafka Data Integration Apache Kafka is an open-source message broker project written in Scala. It provides a unified, high-throughput, low-latency platform for handling real-time data feeds. The design is heavily influenced by transaction logs.

Apache Kafka was originally developed by LinkedIn, and was subsequently open sourced in early 2011.

Accumulo Storage / database Apache Accumulo is a data store with a sorted, distributed key/value and, like HBase, is based on the BigTable technology from Google.  It is written in Java, and is built on top of Apache Hadoop, Apache ZooKeeper, and Apache Thrift. Accumulo is said to be third most popular NoSQL wide column store behind Apache Cassandra and HBase as of 2015.
Chukwa Data Integration Chukwa is a data collection system for managing large distributed systems.
Tez Processing Tez is a flexible data-flow programming framework, built on Hadoop YARN, that processes both in batch and interactive modes. It is being adopted by Hive, Pig and other frameworks in the Hadoop ecosystem, and also by other commercial software (e.g. ETL tools), to replace Hadoop MapReduce as the underlying execution engine.
Drill Processing Apache Drill is an open-source software framework that supports data-intensive distributed applications for interactive analysis of large-scale datasets, even across multiple data stores, at amazing speed.

It is the open source version of Google’s Dremel system which is available as a service called Google BigQuery, and it supports a variety of NoSQL databases and file systems, including HBase, MongoDB, HDFS, Amazon S3, Azure Blob Storage, local files, and more.

Apache Sentry Security Apache Sentry is a system for enforcing fine grained role based authorization to data and metadata stored on a Hadoop cluster.

 

You can get more information about Apache Hadoop here: http://hadoop.apache.org/

Disallow online RPD updates in OBIEE

You may want to disable online updates on your OBIEE RPD for performance reasons or because you have a specific development process that prohibits online updates.

To disallow online RPD updates, do the following:
Log into Enterprise Manager. Navigate the tree menu to Business Intelligence -> coreapplication.  Click tabs “Capacity Management”, and “Performance”.

Under the RPD Updates section, check the box for “Disallow RPD updates”.

disallowRPD_updates

This will prevent online RPD updates for all.

If you want to allow a select group of people to have access to perform online updates, such as a lead developer or administrator, then don’t do the above, but instead provide Administrator role to those that should have the access, and remove it from those that should not (and give them BI Author role for example instead).

 

Installing Tableau Desktop

Tableau is a leading business intelligence software.  Its popularity has grown as a result of its ease of use, awesome visualizations, ability to connect easily to many data sources, its ability to make use of Big Data and Cloud sources, and many other traditional and cutting-edge features.

In this post, I will guide you through the installation of Tableau Desktop 9.  It’s pretty simple.

Go to http://www.tableau.com/ and click Products, or go directly to http://www.tableau.com/products.

tableau_installing_products

Under Tableau Desktop, click on “LEARN MORE”.

tableau_installing_tryitforfree

Click on “TRY IT FOR FREE”.

tableau_installing_download

Save the download to your computer.

tableau_installing_run

Click on Run from this dialog box

OR

Navigate to where you saved the download and double-click the file (in this example, TableauDesktop-64bit-9-3-4.exe) to execute or right-click the file and select Run as administrator.

tableau_installing_navigate

tableau_installing_runasadmin

tableau_installing_welcome

Read and accept the license agreement.

tableau_installing_welcome_accept_install

Click Install if you want to install with defaults.

Or you may also click Customize to change some default settings.  Clicking Customize will bring you to the following dialog.

tableau_installing_customize

From here you may change the install directory and check/uncheck options as you see fit.  Click Install.

tableau_installing_installing

Installation in progress.

tableau_installing_activate

Installation is complete. Choose the desired Activation schedule.

You have 14 days from activation to use the product.

tableau_installing_windowsmenu

Unless you had unchecked this option, Tableau will be added to your Windows start menu.

It’s that simple.

 

OBIA Financial Analytics – SIL_APTransactionFact_DiffManLoad performance issues

We are on Oracle Business Intelligence Applications (OBIA) 7.9.6.3 and had been experiencing performance issues with the SIL_APTransactionFact_DiffManLoad workflow/mapping. We tried a number of things but only had minimal improvements.   Eventually, I found a solution for the poor performance on Oracle Support.  This change resulted in a drastic improvement of this workflow.

The solution can be found on Oracle Support (http://support.oracle.com – Oracle Doc ID: 1446397.1), but for your convenience I have included the content below.  There are other mappings that have a similar problem.

————————————————————————

OBIA 7963: SIL_APTransactionFact_Diffmanload Mapping And Performance Issue (Doc ID 1446397.1)

In this Document
Symptoms
Cause
Solution

 Applies to:
Informatica OEM PowerCenter ETL Server – Version 7.9.6.3 [AN 1900] and later Information in this document applies to any platform.

Symptoms
The OBIEE application (7.9.6.3) ETL task “SIL_APTransactionFact_DiffManLoad” has run over 68 hours during full load execution.

Cause

  1. The size of these columns (DOC_HEADER_TEXT and LINE_ITEM_TEXT )  in DAC is 255 (except AP where its 1020 in DAC and Infa). But in Informatica the size for these two columns is 1020. Ideally it should be 255. This is a known performance issue.
  2. The cause of the problem has been identified in unpublished  Bug 12412793- PSR: B16 INCREMENTAL: SIL_GLREVENUEFACT,

Solution
Below are the steps you will follow to modify the size of the fields in the lookup.

  1. Take a backup of existing Lookups ( LKP_W_AP_XACT_F and LKP_W_AR_XACT_F ).
  2. Login to Informatica Designer >Transformations
  3. Open the lookup and modify the size of the fields. The port lengths for the DOC_HEADER_TEXT and LINE_ITEM_TEXT were changed to 255 .
  4. Save the changes
  5. Rerun the test and confirm the performance issue is resolved  and migrate the changes in PROD.

————————————————————————

Installing Qlik Sense 3.0 Desktop

This post will guide you through the steps for installing Qlik Sense 3.0 Desktop.

Visit this link to get information on installation requirements and steps:
Installing Qlik Sense Desktop Information

You will get to information such as that shown in the screenshot below …
QlikSense_Installation_installresourceslinks

Click on “System requirements” and “Browser support” to get information on system and browser requirements before starting the installation.  System requirements will show operating system, processor, memory and disk space requirements among other things. And browser support will specify the browsers required for each supported OS.

QlikSense_Installation_systemreqs
Click on “Obtaining the setup file” to access the installation file

QlikSense_Installation_downloadlink
Click “Download Qlik Sense Desktop”

QlikSense_Installation_FREEDOWNLOAD
Click the FREE DOWNLOAD button

QlikSense_Installation_downloading
After the download is complete, navigate to the folder where you saved the file.

QlikSense_Installation_runinstall
Run the setup executable (Qlik_Sense_Desktop_setup.exe) by double-clicking on it.  In some cases, it is best to right-click on the setup executable, and “Run as administrator”.

QlikSense_Installation_dotnetframework
Click on “Accept and Install” to acknowledge that Microsoft .NET Framework will be installed and continue to installation process.

QlikSense_Installation_install
Close all other applications, and click Install.

QlikSense_Installation_license
Accept the license agreement and click Next.

QlikSense_Installation_shortcuts
If desired, check “Create desktop shortcuts”.  Click Install.

QlikSense_Installation_complete
The installation is complete.  Click Finish.

QlikSense_Installation_windowsmenu             QlikSense_Installation_desktopicon
Either from the Windows menu or from the desktop icon, launch Qlik Sense.

QlikSense_Installation_launch
You are ready to start using Qlik Sense 3.0.  It’s that simple.

If you get an error message that reads … “An error occurred.  The service did not respond or could not process the request.” … then read the article on this site that addresses that issue to see how to resolve.

Qlik Sense Error on startup – The service did not respond or could not process the request

If you start the desktop version of Qlik Sense and get the following error message, this post might be helpful in resolving.

QlikSense_ServiceDidNotRespond_Loopback
An error occurred.  The service did not respond or could not process the request.

I ran into this error.  After doing a few searches to try to find the reason for this error, it turns out that this was a result of not having internet connectivity, and Qlik Sense 3.0 requires network connectivity.

To resolve, you can try again once you are somewhere that you have an internet/network connection, or you can create a loopback adapter, which will make Qlik Sense always have a network to connect to.

The following steps through how to install the loopback adapter on Windows 7.

Click the Windows Start icon, and type hdwwiz into the Search box.
QlikSense_ServiceDidNotRespond_Loopback_RunAddHardware

The wizard opens with the Add Hardware dialog …
QlikSense_ServiceDidNotRespond_Loopback_Welcome
Click Next.

QlikSense_ServiceDidNotRespond_Loopback_select
Select “Install the hardware …” option, and click Next

QlikSense_ServiceDidNotRespond_Loopback_networkadapters
Select “Network adapters” and click Next.

QlikSense_ServiceDidNotRespond_Loopback_msloopbackadapter
Select Microsoft (on the left), and then select Microsoft Loopback Adapter (on the right), and then click Next.

QlikSense_ServiceDidNotRespond_Loopback_install
Click Next

QlikSense_ServiceDidNotRespond_Loopback_install_complete
Click Finish.  After installing, Qlik Sense should launch without a problem.

QlikSense_ServiceDidNotRespond_Loopback_QSLaunch

QlikView vs. Qlik Sense

What is the difference between QlikView and Qlik Sense?  QlikView and Qlik Sense are both business intelligence platforms from the same company (Qlik), but are different products. Qlik Sense is not just a new version or release of QlikView.

The below table shows the differences and similarities between the 2 products:

QlikView Qlik Sense
First version released in 1996 First version released in 2014

Data Discovery

Same analysis/calculation engine – scripts and formulas will mostly work between the 2 platforms

Same green-gray-white (included-excluded) functionality

Both products/platforms will be enhanced and supported for the foreseeable future

Guided Analytics – drill-down and drill-through

Self-service data analytics and visualization

Dashboards and analytics/reports built by developers and pre-canned and configured for flexible user interaction Metadata for reporting developed by developers, and users create analytics
Users typically do not have the ability to create new analysis, but use the various features built to slice and dice the data. Users slice and dice the data in any creative manner that they see fit.
Open APIs allow for embedding Qlik Sense into website and other applications, and also for extending the application.
Cutting edge web interface – Responsive web interface – adapt to different screen sizes – from PC to tablet to phones – on any HTML5-compatible browser
Collaboration and story telling
Extensive Pixel-perfect formatting options

Which is better?  It depends.

If you have a user base and business needs that require answers to specific questions, without the need for user self-service BI, then QlikView is a good option.  Also, for very high control over all features of the visualizations you create, QlikView is the better choice.

However, if you have a sophisticated user base that desires to create their own analyses and business needs are more toward data discovery, then Qlik Sense is a good option.  Also, if you plan to or would like to make analytics available on all kinds of devices, then Qlik Sense is the way to go due to the responsive web design interface.

Of course, there will be other factors such as cost, and available resources and skills within the BI Team and supporting teams.  As with any software choice, a full analysis of the options and how they best meet the requirements is needed.

What is Qlik Sense?

Qlik Sense is a business intelligence platform with strengths in self-service usage, data discovery, and visualization.  Qlik Sense is from the same company that develops QlikView, but it is a totally different product. It is not an upgrade to QlikView or a new version of QlikView. However, it provides the core functionality that QlikView offers – such as in-memory storage and processing, the included-excluded/green-white-gray feature, and associative data model; with some additional features and benefits – such as usability, cloud readiness, responsive design, data storytelling, and open APIs.

Qlik Sense is available in 3 editions – desktop (for use on a personal computer for a single-user), enterprise (create and consume via a web interface for the entire enterprise), and cloud (create and consume via web interface on any device while hosted on the Qlik cloud).

You can learn more about Qlik Sense, QlikView, and Qlik (the company that creates these software) by visiting the company’s website at: http://www.qlik.com/.

What is QlikView?

QlikView is a business intelligence platform.  It allows for quick development and deployment of business intelligence and analytics applications, and for easy consumption of those applications through the web by those authorized.

QlikView has a unique associative data model feature that allows for all of the data to be used for analysis without pre-defined drill-down or drill-through relationships.

QlikView also has an included-excluded type display feature (sometimes referred to with the phrase … the power of green-white-gray) that allows users to not only see what data is included in the selected set, but also see what data is not included, thereby enabling data discovery.

QlikView holds data for its applications in memory, which allows it to deliver results quickly without the need for pre-calculated / pre-aggregated cubes.

These features help to differentiate QlikView from other BI platforms, and are some of the reasons for its growth and its leadership position in the BI space.

You can learn more about QlikView and the company that creates this software, Qlik, by visiting the company’s website at: http://www.qlik.com/.

QlikView Desktop Installation

In this post, I will go through the simple process of installing QlikView Desktop.

From the Qlik website (www.qlik.com), navigate or search for the download.  Download the Free Personal Edition of QlikView. You will need to register to download.

 

Click the FREE DOWNLOAD button to download the software.QlikView_Installation_Download

After the download is complete, navigate to where you downloaded the software.  Double-click on the executable to run the program and start the install wizard, or in some cases, you may need to Right-click and select Run as administrator.

QlikView_Installation_Run

Choose your language and click OK.

QlikView_Installation_Lang

The Install Wizard is prepared.

QlikView_Installation_Wizard

Click Next at the Welcome dialog.

QlikView_Installation_WizardWelcome

Accept the license agreement and click Next.

QlikView_Installation_license

Enter Name and Organization name.

QlikView_Installation_cust

Accept the default directory or choose / enter the directory to which QlikView should be installed. The example below shows a non-default directory selected.

QlikView_Installation_choosefolder

Click Next to confirm the destination folder.

QlikView_Installation_destinationfolder

Choose Complete installation type (makes sense in most cases).

QlikView_Installation_type

Click Install to start the installation

QlikView_Installation_ready

It’s Complete. Click Finish.

QlikView_Installation_complete

Go to the Windows Start menu and navigate to QlikView. Launch the program.

QlikView_Installation_windowsmenu

QlikView launches.

QlikView_Installation_launch

You have successfully installed QlikView and you are ready to get going. It’s that simple.