Wednesday, 8 July 2015

Apache whirr basic tutorial explained

What is Apache Whirr


Apache Whirr is open source java API library for creating/setup hadoop cluster on different cloud instance services.
Apache whirr also provides command line tools to launch hadoop services. Whirr tool uses JCloud api in middle to interact with different cloud providers

Whirr Advantages

Apache Whirr provides following advantages No need of providing scripts for each cloud provider to execute cloud services
Common API to interact with different cloud providers for provisioning
Install/configure/setup/deploy hadoop clusters very quickly in minutes

If you see the whirr recipe folder of whirr software package, the following cloud providers and services are supported

Whir supported cloud providers

1. Amazon  cloud :- Very easily we can setup hadoop on amazon ec2 instance. Launch clusters dynamicallyl and destroy cluseters when not required
2. Rackspace cloud :-
3. Open stack Cloud

Whirr supported services

1. Hadoop
2. Casandra
3. zoo keeper
4. Hbase
5. Flume
6. Kafka
7. Mongodb

How to install Whir on local instance

For setup and install whirr on any instance java is required thing

First download whir  from apache mirror site http://www.apache.org/dyn/closer.cgi/incubator/whirr/
Extract whirr tarball

$ tar -xzvf whirr-0.8.0.tar.gz

$ cd whirr-0.8.0

Set PATH environment variable for whirr

$export PATH=$PATH:/path/to/whirr/bin

to Test whether whirr is working or not
$ whirr version

Apache Whirr 0.8.0

above command display version of installed whirr package

To configure any cloud providers, users has to write whirr.properties which has roles  and cluster information

whirr.properties file

whirr.cluster-name=name of the cluster
whirr.instance-templates=1 hadoop-jobtracker+hadoop-namenode,1 hadoop-datanode+hadoop-tasktracker different roles and services

whirr.provider=provide cloud provider here
whirr.identity=provide access key if of cloud provider instance
whirr.credential=secret access key or cloud provider instance

whirr.private-key-file= private key file of cloud provider 
whirr.public-key-file=public key file of cloud provider

That's it on my understanding on Apache whirr. Please comment below for any questions on this.


Wednesday, 19 November 2014

Scanner Class tutorial with examples in java



Basics Usage of  Scanner class in java. 

Scanner class is one of basic default classes provided by java language as part of JDK installation. Scanner class is located in java.util package Java.util.Scanner class is one way to take the input from keyboard in java. Scanner class read the input in the form of java primitive data types like Integer and String. Internally Scanner class in java uses regular expression to parse the input using default space delimiter.Scanner class introduce in java 1.5

Java.util.Scanner class declaration.
Scannar.java class in JDK as following declaration

public final class Scanner
extends Object
implements Iterator, Closeable

Scanner class implements Iterator and closeable interfaces.

Iterator class used to iterate scanned primititve types, Closeable is used to release the resources once scanner read the source.

Usage of Scanner class in java.
import java.util.Scanner;

public class ScannerExample {
      public static void main(String args[]) {
            Scanner readInput = new Scanner(System.in);
            String line = readInput.nextLine();
            System.out.println("Scanner Console Example= " + line);
      }
}
 And out put  is Scanner Console Example= Scanner Usage example if Scanner Usage example is provided as intput

Various Scanner examples in java 1.5

We can use java.util.scanner class is used to read data from various source
  
How to read the input data from console using Scanner class


Scanner API in java provides various constructor for reading various srouces like File, InputStream, java.nio.file.Path, java.nio.channels.ReadableByteChannel

System.in provides the reading capabilities to read from console. This option provides capabilities to read data from console based on input data

How to read the input data from File stream using Scanner class in java


Scanner constructor has as file reader reference to read input data  from files.
Scanner fileScannerRead = new Scanner (new FileReader(new File("FILE_PATH")));


How to Fix NoSuchElementException using Scanner class 

NoSuchElementException exception is RuntimeException occurred when there is no element to scan while using Scaner class in java

NoSuchElementException occurs when code has Scanner.next() method

To fix this, code needs to check whether next element is available or not.
            Scanner readInput = new Scanner(System.in);
if (readInput.hasNext()) {
                  Object obj = readInput.next();
            }

nextInt(),nextLong() methods also throws NoSuchElementException . To fix, Code has to use corresponding hasNextInt(),hasNextLong() methods.

Fixing Exception in thread "main" java.util.InputMismatchException

The following example expects the input as number from console
Public static void main(String args[]) {
            Scanner readInput = new Scanner(System.in);
        System.out.print("Enter input number : ");
        int inputNo = readInput.nextInt();


Above program prints read the integer number when integer number is provided.

InputMismatchException  exception throws when float number is provided as input.  Please make sure that you enter the correct input data and handle the correct method to read data.

java.util.Scanner class advantages:-

  • Simplifies the text reading capabilities using scanner class
  • Scanner has default regular expression for primitive data types and String. So Regular expression compile is not required and hence improved the performance


java.util.Scanner class Disadvantages

  • Scanner is not good for multithread applications for thread safety. Need to handle synchronization
  • Java Compilter encountered Scanner class during execution, compilter wait until d ata is entered by user.