Dear Wiki user,
You have subscribed to a wiki page or wiki category on "Hadoop Wiki" for change notification.
The following page has been changed by udanax:
http://wiki.apache.org/hadoop/Hama

[http://wiki.apache.org/hadoopdata/attachments/Hama/attachments/hamamedium.png]

 * I'm looking for champion/mentor who can leads the proposal process.
 * http://wiki.apache.org/incubator/HamaProposal
== Introduction ==
'''Hama''' is a parallel matrix computational package based on Hadoop Map/Reduce. ''(Hama is in korean, which means 'Hippo').'' It will be useful for a massively largescale ''Numerical Analysis'' and ''Data Mining'', which need the intensive computation power of matrix inversion, e.g. linear regression, PCA, SVM and etc. It will be also useful for many scientific applications, e.g. physics computations, linear algebra, computational fluid dynamics, statistics, graphic rendering and many more.
Currently, several sharedmemory based parallel matrix solutions can provide a scalable and high performance matrix operations, but matrix resources can not be scalable in the term of complexity. The '''Hama''' approach proposes the use of 2dimensional Row and Column(Qualifier) space and multidimensional Columnfamilies of Hbase, which is able to store large sparse and various type of matrices (e.g. Triangular Matrix, 3D Matrix, and etc.). In addition, autopartitioned sparsity substructure will be efficiently managed and serviced by Hbase. Row and Column operations can be done in lineartime, where several algorithms such as structured Gaussian elimination and iterative methods run in O(~the number of nonzero elements in the matrix~ / ~number of mappers (processors/cores)~) time on Hadoop Map/Reduce.
 === Initial Contributors ===
 * Edward Yoon ([mailto:edward@udanax.org edward AT SPAMFREE udanax DOT org])
 * Chanwit Kaewkasi ([mailto:chanwit@gmail.com chanwit AT SPAMFREE gmail DOT com])
 * Min Cha ([mailto:minslovey@gmail.com minslovey AT SPAMFREE gmail DOT com])
 === Initial Source ===
 * http://code.google.com/p/hama/source/checkout
 === Dependencies ===
 * Hadoop (HDFS, Map/Reduce) License: Apache License, 2.0
 * Hbase (Sparse Matrix Table) License: Apache License, 2.0
 
 == Components ==
 === MapReduce In/Out Formatter ===
 * Sparse Matrix
 * Fraction Matrix
 * Triangular Matrix
 === Basic Linear Algebra ===
 * Addition/Substration
 * Multiplication
 * Determinant
 * Cholesky decomposition
 * Crout Decomposition
 * Doolittle Decomposition
 === API & Groovy Support ===
 The '''Hama''' project utilities Groovy for simplification of computational language with generalized the matrix Java Interface.
 For example, we can perform a parallel matrix multiplication by expressing as follows:
 {{{
 Java API :

 Matrix a = Matrix.random(conf, 4, 4);
 Matrix b = Matrix.random(conf, 4, 4);
 Matrix c = a.multiply(b);

 Groovy :
+ * http://wiki.apache.org/incubator/HamaProposal
 def a = rand(10,10)
 def b = rand(10,10)
 def c = a * b
 }}}
 
 == The parallel time complexity of Hama ==
 === Addition/Substraction ===
 * The matrix add/sub requires table full scan twice.
 * The total time spent by these operation is given by O(n^2^/mappers).
 === Multiplication ===
 * The Multiplication requires (n + 1) table full scan irrespective of the number of mapper.
 * Each map processor requires O(n^2^) for the communication and O(n^3^/mappers) the computation.
 
 == References ==
 * ScaLAPACK, a library of highperformance linear algebra routines for distributedmemory messagepassing MIMD computers
 * Scheduling algorithms for parallel Gaussian elimination withcommunication costs, Amoura, A.K.; Bampis, E.; Konig, J.C.
 * High performance numerical libraries in Java, BjørnOve Heimsund
