Author: dlanglais Date: 2010-02-10 07:50:08 +0100 (Wed, 10 Feb 2010) New Revision: 67 Added: trunk/msm-hbase/ trunk/msm-hbase/LICENSE.txt trunk/msm-hbase/README.txt trunk/msm-hbase/changelog.txt trunk/msm-hbase/pom.xml trunk/msm-hbase/src/ trunk/msm-hbase/src/main/ trunk/msm-hbase/src/main/java/ trunk/msm-hbase/src/main/java/org/ trunk/msm-hbase/src/main/java/org/nuiton/ trunk/msm-hbase/src/main/java/org/nuiton/mapstoragemanager/ trunk/msm-hbase/src/main/java/org/nuiton/mapstoragemanager/plugins/ trunk/msm-hbase/src/main/java/org/nuiton/mapstoragemanager/plugins/hbase/ trunk/msm-hbase/src/main/java/org/nuiton/mapstoragemanager/plugins/hbase/HBase.java trunk/msm-hbase/src/main/resources/ trunk/msm-hbase/src/main/resources/i18n/ trunk/msm-hbase/src/main/resources/i18n/mapstoragemanager-en_GB.properties trunk/msm-hbase/src/main/resources/i18n/mapstoragemanager-fr_FR.properties trunk/msm-hbase/src/main/resources/i18n/mapstoragemanagerarch-en_GB.properties trunk/msm-hbase/src/main/resources/i18n/mapstoragemanagerarch-fr_FR.properties trunk/msm-hbase/src/main/resources/i18n/msn-bighashmap-fr_FR.properties trunk/msm-hbase/src/main/resources/log4j.properties trunk/msm-hbase/src/site/ trunk/msm-hbase/src/site/doc/ trunk/msm-hbase/src/site/doc/attachment.sh trunk/msm-hbase/src/site/doc/maven_hbase.rst trunk/msm-hbase/src/test/ trunk/msm-hbase/src/test/java/ trunk/msm-hbase/src/test/java/org/ trunk/msm-hbase/src/test/java/org/nuiton/ trunk/msm-hbase/src/test/java/org/nuiton/mapstoragemanager/ trunk/msm-hbase/src/test/java/org/nuiton/mapstoragemanager/plugins/ trunk/msm-hbase/src/test/java/org/nuiton/mapstoragemanager/plugins/hbase/ trunk/msm-hbase/src/test/resources/ trunk/msm-hbase/src/test/resources/log4j.properties trunk/src/ trunk/src/site/ trunk/src/site/doc/ trunk/src/site/doc/bigtable/ trunk/src/site/doc/bigtable/HowToHbase.rst trunk/src/site/doc/bigtable/analyseBT.rst trunk/src/site/doc/bigtable/bigTable.pdf trunk/src/site/doc/bigtable/hbase-files.png trunk/src/site/doc/bigtable/projetHBase.rst trunk/src/site/reports/ trunk/src/site/reports/week3.rst trunk/src/site/reports/week4.rst trunk/src/site/reports/week5.rst trunk/src/site/rst/ Removed: trunk/mapstoragemanagerarch/src/main/java/org/nuiton/mapstoragemanager/plugins/HBase.java trunk/mapstoragemanagerarch/src/site/doc/ trunk/mapstoragemanagerarch/src/site/reports/ trunk/mapstoragemanagerarch/src/site/rst/ Modified: trunk/mapstoragemanagerarch/pom.xml trunk/pom.xml Log: Tout d'abord : - Les docs "g?\195?\169n?\195?\169raux" sur le projet sont remont?\195?\169s ?\195?\160 la racine (ils ?\195?\169taient rest?\195?\169 dans mapstoragemanagerarch/src/site/**). - S?\195?\169paration du "d?\195?\169but" de plugin Hbase dans un module MSM-HBase s?\195?\169par?\195?\169. - Ajout du script founis par Stephane Chorlet dans le site de ce m?\195?\170me plugin. Modified: trunk/mapstoragemanagerarch/pom.xml =================================================================== --- trunk/mapstoragemanagerarch/pom.xml 2010-02-09 14:52:00 UTC (rev 66) +++ trunk/mapstoragemanagerarch/pom.xml 2010-02-10 06:50:08 UTC (rev 67) @@ -152,20 +152,20 @@ </properties> <build> - <resources> + <!--<resources> <resource> <directory>src/main/java/org/nuiton/mapstoragemanager/plugins</directory> <excludes> <exclude>HBase.java</exclude> </excludes> </resource> - </resources> + </resources>--> <plugins> - <plugin> + <!--<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> @@ -173,7 +173,7 @@ <exclude>org/nuiton/mapstoragemanager/plugins/HBase.java</exclude> </excludes> </configuration> - </plugin> + </plugin>--> <plugin> <groupId>org.nuiton.jaxx</groupId> Deleted: trunk/mapstoragemanagerarch/src/main/java/org/nuiton/mapstoragemanager/plugins/HBase.java =================================================================== --- trunk/mapstoragemanagerarch/src/main/java/org/nuiton/mapstoragemanager/plugins/HBase.java 2010-02-09 14:52:00 UTC (rev 66) +++ trunk/mapstoragemanagerarch/src/main/java/org/nuiton/mapstoragemanager/plugins/HBase.java 2010-02-10 06:50:08 UTC (rev 67) @@ -1,175 +0,0 @@ - -import java.io.IOException; -import java.util.HashSet; -import java.util.Set; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.mapstoragemanager.plugins.BigTable; - -import org.apache.hadoop.hbase.HBaseConfiguration; -import org.apache.hadoop.hbase.client.Get; -import org.apache.hadoop.hbase.client.HTable; -import org.apache.hadoop.hbase.client.Put; -import org.apache.hadoop.hbase.client.Result; -import org.apache.hadoop.hbase.client.ResultScanner; -import org.apache.hadoop.hbase.client.Scan; -import org.apache.hadoop.hbase.util.Bytes; - -public class HBase implements BigTable { - - /** - * Logger. - */ - private static final Log LOG = LogFactory.getLog(HBase.class); - - private HBaseConfiguration config; - private HTable table; - private String familyName = "mylittlecolumnfamily"; - private String rowName = "myLittleRow"; - private String tableName = "mylittletable"; - - public HBase() { - // You need a configuration object to tell the client where to connect. - // When you create a HBaseConfiguration, it reads in whatever you've set - // into your hbase-site.xml and in hbase-default.xml, as long as these can - // be found on the CLASSPATH - org.apache.hadoop.conf.Configuration conf = new org.apache.hadoop.conf.Configuration(); - config = new HBaseConfiguration(conf); - LOG.info("test"); - selectTable(tableName); - put("test", "val"); - put("test", "val2"); - put("test2", "val3"); - } - - @Override - public void put(String key, String value) { - - // To add to a row, use Put. A Put constructor takes the name of the row - // you want to insert into as a byte array. In HBase, the Bytes class has - // utility for converting all kinds of java types to byte arrays. In the - // below, we are converting the String "myLittleRow" into a byte array to - // use as a row key for our update. Once you have a Put instance, you can - // adorn it by setting the names of columns you want to update on the row, - // the timestamp to use in your update, etc.If no timestamp, the server - // applies current time to the edits. - Put p = new Put(Bytes.toBytes(rowName)); - - // To set the value you'd like to update in the row 'myRow', specify the - // column family, column qualifier, and value of the table cell you'd like - // to update. The column family must already exist in your table schema. - // The qualifier can be anything. All must be specified as byte arrays as - // hbase is all about byte arrays. Lets pretend the table - // 'myLittleHBaseTable' was created with a family 'myLittleFamily'. - p.add(Bytes.toBytes(familyName), Bytes.toBytes(key), - Bytes.toBytes(value)); - - // Once you've adorned your Put instance with all the updates you want to - // make, to commit it do the following (The HTable#put method takes the - // Put instance you've been building and pushes the changes you made into - // hbase) - - /*try { - table.put(p); - } catch (IOException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } - */ - } - - @Override - public String get(String key) { - - // Now, to retrieve the data we just wrote. The values that come back are - // Result instances. Generally, a Result is an object that will package up - // the hbase return into the form you find most palatable. - Get g = new Get(Bytes.toBytes(rowName)); - Result r; - byte[] value = null; -// try { -// r = table.get(g); -// value = r.getValue(Bytes.toBytes(familyName), -// Bytes.toBytes(key)); -// } catch (IOException e) { -// e.printStackTrace(); -// } - - // If we convert the value bytes, we should get back 'Some Value', the - // value we inserted at this location. - String valueStr = Bytes.toString(value); - - return "valeur"; - //return valueStr; - } - - @Override - public Set<String> getKeys() { - - Set<String> keySet = new HashSet<String>(); - - // Sometimes, you won't know the row you're looking for. In this case, you - // use a Scanner. This will give you cursor-like interface to the contents - // of the table. To set up a Scanner, do like you did above making a Put - // and a Get, create a Scan. Adorn it with column names, etc. - Scan s = new Scan(); - //s.addColumn(Bytes.toBytes(familyName), Bytes.toBytes("test")); - ResultScanner scanner = null; - try { - scanner = table.getScanner(s); - } catch (IOException e) { - // TODO Auto-generated catch block - //e.printStackTrace(); - LOG.error(e.toString(), e); - } - try { - // Scanners return Result instances. - // Now, for the actual iteration. One way is to use a while loop like so: - try { - for (Result rr = scanner.next(); rr != null; rr = scanner.next()) { - // print out the row we found and the columns we were looking for - //System.out.println("Found row: " + rr); - LOG.info("Found row: " + rr); - keySet.add(rr.toString()); - } - - } catch (IOException e) { - // TODO Auto-generated catch block - //e.printStackTrace(); - LOG.error(e.toString(), e); - } - - // The other approach is to use a foreach loop. Scanners are iterable! - // for (Result rr : scanner) { - // System.out.println("Found row: " + rr); - // } - } finally { - // Make sure you close your scanners when you are done! - // Thats why we have it inside a try/finally clause - scanner.close(); - } - - return keySet; - } - - public void selectTable(String tableName) { - // This instantiates an HTable object that connects you to - // the "myLittleHBaseTable" table. - try { - table = new HTable(config, tableName); - } catch (IOException e) { - //e.printStackTrace(); - LOG.error(e.toString(), e); - } - } - - @Override - public void connect(String host, String base, String username, - String password) { - // TODO Auto-generated method stub - } - - public static void main(String[] args) { - HBase h = new HBase(); - } -} Added: trunk/msm-hbase/LICENSE.txt =================================================================== --- trunk/msm-hbase/LICENSE.txt (rev 0) +++ trunk/msm-hbase/LICENSE.txt 2010-02-10 06:50:08 UTC (rev 67) @@ -0,0 +1,166 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + Added: trunk/msm-hbase/changelog.txt =================================================================== --- trunk/msm-hbase/changelog.txt (rev 0) +++ trunk/msm-hbase/changelog.txt 2010-02-10 06:50:08 UTC (rev 67) @@ -0,0 +1,2 @@ +Changelog is not any longer maintained, please refer to the release note : + http://maven-site.nuiton.org/mapstoragemanager/changes-report.html Added: trunk/msm-hbase/pom.xml =================================================================== --- trunk/msm-hbase/pom.xml (rev 0) +++ trunk/msm-hbase/pom.xml 2010-02-10 06:50:08 UTC (rev 67) @@ -0,0 +1,281 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + + <!-- repository containing the parent pom. --> + <repositories> + <repository> + <id>org.nuiton</id> + <url>http://maven.nuiton.org/release</url> + </repository> + </repositories> + + <modelVersion>4.0.0</modelVersion> + + <!-- ************************************************************* --> + <!-- *** POM Relationships *************************************** --> + <!-- ************************************************************* --> + <parent> + <groupId>org.nuiton</groupId> + <artifactId>mavenpom4redmine</artifactId> + <version>2.0.4</version> + </parent> + + <version>0.1-SNAPSHOT</version> + <artifactId>msn-hbase</artifactId> + + <dependencies> + + <dependency> + <groupId>org.nuiton</groupId> + <artifactId>mapstoragemanagerarch</artifactId> + <version>0.1-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.nuiton</groupId> + <artifactId>nuiton-utils</artifactId> + <version>${lutinutil.version}</version> + </dependency> + <dependency> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + <version>1.1.1</version> + </dependency> + + <!--Jaxx--> + <dependency> + <groupId>org.nuiton.jaxx</groupId> + <artifactId>jaxx-runtime</artifactId> + <version>${jaxx.version}</version> + </dependency> + + <dependency> + <groupId>org.nuiton.jaxx</groupId> + <artifactId>jaxx-widgets</artifactId> + <version>${jaxx.version}</version> + </dependency> + <!-- JUnit for tests --> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.7</version> + <scope>test</scope> + </dependency> + </dependencies> + + <!-- ************************************************************* --> + <!-- *** Project Information ************************************* --> + <!-- ************************************************************* --> + + <name>MSM-HBase</name> + + <description>Creation of a graphic user interface for Hbase </description> + <inceptionYear>2010</inceptionYear> + + <developers> + <developer> + <id>tchemit</id> + <name>Tony Chemit</name> + <email>chemit@codelutin.com</email> + <organization>CodeLutin</organization> + <timezone>+2</timezone> + <roles> + <role>Développeur</role> + </roles> + </developer> + <developer> + <id>fdesbois</id> + <name>Florian Desbois</name> + <email>fdesbois@codelutin.com</email> + <organization>CodeLutin</organization> + <timezone>+2</timezone> + <roles> + <role>Développeur</role> + </roles> + </developer> + <developer> + <id>fgilet</id> + <name>Florent Gilet</name> + <email>florent.gilet@etu.univ-nantes.fr</email> + <organization>Université de nantes</organization> + <timezone>+2</timezone> + <roles> + <role>Développeur</role> + </roles> + </developer> + <developer> + <id>gcrieloue</id> + <name>Gilles Crieloue</name> + <email>gilles.crieloue@etu.univ-nantes.fr</email> + <organization>Université de nantes</organization> + <timezone>+2</timezone> + <roles> + <role>Développeur</role> + </roles> + </developer> + <developer> + <id>afages</id> + <name>Amaury Fages</name> + <email>amaury.fages@etu.univ-nantes.fr</email> + <organization>Université de nantes</organization> + <timezone>+2</timezone> + <roles> + <role>Développeur</role> + </roles> + </developer> + <developer> + <id>dlanglais</id> + <name>Dorian langlais</name> + <email>dorain.langlais@etu.univ-nantes.fr</email> + <organization>Université de nantes</organization> + <timezone>+2</timezone> + <roles> + <role>Développeur</role> + </roles> + </developer> + </developers> + + <!-- ************************************************************* --> + <!-- *** Build Settings ****************************************** --> + <!-- ************************************************************* --> + <packaging>jar</packaging> + + <properties> + + <!-- main class in jar + <maven.jar.main.class>org.nuiton.mapstoragemanager.Main</maven.jar.main.class>--> + <jaxx.version>2.0.0-beta-3</jaxx.version> + <lutinutil.version>1.1.2</lutinutil.version> + <i18n.version>1.0.1</i18n.version> + + <!-- jaxx + <jaxx.useUIManagerForIcon>true</jaxx.useUIManagerForIcon> + <jaxx.addProjectClassPath>true</jaxx.addProjectClassPath> + <jaxx.addSourcesToClassPath>true</jaxx.addSourcesToClassPath>--> + </properties> + + <build> + + <resources> + <resource> + <directory>src/main/java/org/nuiton/mapstoragemanager/plugins/hbase</directory> + <excludes> + <exclude>HBase.java</exclude> + </excludes> + </resource> + </resources> + + <plugins> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <excludes> + <exclude>org/nuiton/mapstoragemanager/plugins/hbase/HBase.java</exclude> + </excludes> + </configuration> + </plugin> + + <!--<plugin> + <groupId>org.nuiton.jaxx</groupId> + <artifactId>maven-jaxx-plugin</artifactId> + <version>${jaxx.version}</version> + <executions> + <execution> + <goals> + <goal>generate</goal> + </goals> + </execution> + </executions> + </plugin> + + <plugin> + <groupId>org.nuiton.i18n</groupId> + <artifactId>maven-i18n-plugin</artifactId> + <version>${i18n.version}</version> + <configuration> + silent>true</silent + <entries> + <entry> + <basedir>${maven.gen.dir}/java/</basedir> + </entry> + </entries> + </configuration> + <executions> + <execution> + <goals> + <goal>parserJava</goal> + <goal>bundle</goal> + </goals> + </execution> + </executions> + </plugin>--> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-dependency-plugin</artifactId> + <executions> + <execution> + <id>copy-deps</id> + <goals> + <goal>copy-dependencies</goal> + </goals> + <configuration> + <silent>true</silent> + <overWriteReleases>false</overWriteReleases> + <overWriteSnapshots>false</overWriteSnapshots> + <overWriteIfNewer>true</overWriteIfNewer> + <outputDirectory>${project.build.directory}/lib</outputDirectory> + </configuration> + </execution> + </executions> + + </plugin> + + </plugins> + + <pluginManagement> + <plugins> + + <plugin> + <groupId>org.nuiton</groupId> + <artifactId>maven-license-plugin</artifactId> + <configuration> + <copyToMETA_INF>true</copyToMETA_INF> + </configuration> + </plugin> + + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifest> + <addClasspath>true</addClasspath> + <classpathPrefix>./lib/</classpathPrefix> + </manifest> + </archive> + </configuration> + </plugin> + + <!-- plugin site --> + <!--<plugin> + <artifactId>maven-site-plugin</artifactId> + <dependencies> + <dependency> + <groupId>org.nuiton</groupId> + <artifactId>doxia-module-jrst</artifactId> + <version>${jrst.version}</version> + </dependency> + </dependencies> + </plugin>--> + + </plugins> + </pluginManagement> + </build> + +</project> + + Added: trunk/msm-hbase/src/main/java/org/nuiton/mapstoragemanager/plugins/hbase/HBase.java =================================================================== --- trunk/msm-hbase/src/main/java/org/nuiton/mapstoragemanager/plugins/hbase/HBase.java (rev 0) +++ trunk/msm-hbase/src/main/java/org/nuiton/mapstoragemanager/plugins/hbase/HBase.java 2010-02-10 06:50:08 UTC (rev 67) @@ -0,0 +1,176 @@ +package org.nuiton.mapstoragemanager.plugins.hbase; + +import java.io.IOException; +import java.util.HashSet; +import java.util.Set; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.mapstoragemanager.plugins.BigTable; + +import org.apache.hadoop.hbase.HBaseConfiguration; +import org.apache.hadoop.hbase.client.Get; +import org.apache.hadoop.hbase.client.HTable; +import org.apache.hadoop.hbase.client.Put; +import org.apache.hadoop.hbase.client.Result; +import org.apache.hadoop.hbase.client.ResultScanner; +import org.apache.hadoop.hbase.client.Scan; +import org.apache.hadoop.hbase.util.Bytes; + +public class HBase implements BigTable { + + /** + * Logger. + */ + private static final Log LOG = LogFactory.getLog(HBase.class); + + private HBaseConfiguration config; + private HTable table; + private String familyName = "mylittlecolumnfamily"; + private String rowName = "myLittleRow"; + private String tableName = "mylittletable"; + + public HBase() { + // You need a configuration object to tell the client where to connect. + // When you create a HBaseConfiguration, it reads in whatever you've set + // into your hbase-site.xml and in hbase-default.xml, as long as these can + // be found on the CLASSPATH + org.apache.hadoop.conf.Configuration conf = new org.apache.hadoop.conf.Configuration(); + config = new HBaseConfiguration(conf); + LOG.info("test"); + selectTable(tableName); + put("test", "val"); + put("test", "val2"); + put("test2", "val3"); + } + + @Override + public void put(String key, String value) { + + // To add to a row, use Put. A Put constructor takes the name of the row + // you want to insert into as a byte array. In HBase, the Bytes class has + // utility for converting all kinds of java types to byte arrays. In the + // below, we are converting the String "myLittleRow" into a byte array to + // use as a row key for our update. Once you have a Put instance, you can + // adorn it by setting the names of columns you want to update on the row, + // the timestamp to use in your update, etc.If no timestamp, the server + // applies current time to the edits. + Put p = new Put(Bytes.toBytes(rowName)); + + // To set the value you'd like to update in the row 'myRow', specify the + // column family, column qualifier, and value of the table cell you'd like + // to update. The column family must already exist in your table schema. + // The qualifier can be anything. All must be specified as byte arrays as + // hbase is all about byte arrays. Lets pretend the table + // 'myLittleHBaseTable' was created with a family 'myLittleFamily'. + p.add(Bytes.toBytes(familyName), Bytes.toBytes(key), + Bytes.toBytes(value)); + + // Once you've adorned your Put instance with all the updates you want to + // make, to commit it do the following (The HTable#put method takes the + // Put instance you've been building and pushes the changes you made into + // hbase) + + /*try { + table.put(p); + } catch (IOException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + */ + } + + @Override + public String get(String key) { + + // Now, to retrieve the data we just wrote. The values that come back are + // Result instances. Generally, a Result is an object that will package up + // the hbase return into the form you find most palatable. + Get g = new Get(Bytes.toBytes(rowName)); + Result r; + byte[] value = null; +// try { +// r = table.get(g); +// value = r.getValue(Bytes.toBytes(familyName), +// Bytes.toBytes(key)); +// } catch (IOException e) { +// e.printStackTrace(); +// } + + // If we convert the value bytes, we should get back 'Some Value', the + // value we inserted at this location. + String valueStr = Bytes.toString(value); + + return "valeur"; + //return valueStr; + } + + @Override + public Set<String> getKeys() { + + Set<String> keySet = new HashSet<String>(); + + // Sometimes, you won't know the row you're looking for. In this case, you + // use a Scanner. This will give you cursor-like interface to the contents + // of the table. To set up a Scanner, do like you did above making a Put + // and a Get, create a Scan. Adorn it with column names, etc. + Scan s = new Scan(); + //s.addColumn(Bytes.toBytes(familyName), Bytes.toBytes("test")); + ResultScanner scanner = null; + try { + scanner = table.getScanner(s); + } catch (IOException e) { + // TODO Auto-generated catch block + //e.printStackTrace(); + LOG.error(e.toString(), e); + } + try { + // Scanners return Result instances. + // Now, for the actual iteration. One way is to use a while loop like so: + try { + for (Result rr = scanner.next(); rr != null; rr = scanner.next()) { + // print out the row we found and the columns we were looking for + //System.out.println("Found row: " + rr); + LOG.info("Found row: " + rr); + keySet.add(rr.toString()); + } + + } catch (IOException e) { + // TODO Auto-generated catch block + //e.printStackTrace(); + LOG.error(e.toString(), e); + } + + // The other approach is to use a foreach loop. Scanners are iterable! + // for (Result rr : scanner) { + // System.out.println("Found row: " + rr); + // } + } finally { + // Make sure you close your scanners when you are done! + // Thats why we have it inside a try/finally clause + scanner.close(); + } + + return keySet; + } + + public void selectTable(String tableName) { + // This instantiates an HTable object that connects you to + // the "myLittleHBaseTable" table. + try { + table = new HTable(config, tableName); + } catch (IOException e) { + //e.printStackTrace(); + LOG.error(e.toString(), e); + } + } + + @Override + public void connect(String host, String base, String username, + String password) { + // TODO Auto-generated method stub + } + + public static void main(String[] args) { + HBase h = new HBase(); + } +} Added: trunk/msm-hbase/src/main/resources/i18n/mapstoragemanager-en_GB.properties =================================================================== --- trunk/msm-hbase/src/main/resources/i18n/mapstoragemanager-en_GB.properties (rev 0) +++ trunk/msm-hbase/src/main/resources/i18n/mapstoragemanager-en_GB.properties 2010-02-10 06:50:08 UTC (rev 67) @@ -0,0 +1,32 @@ +Map\ Storage\ Manager=Map Storage Manager +TABLE\ NAME\ \:\ TODO= +login\ \:=Login +mapstoragemanager.action.aboutUs=About us +mapstoragemanager.action.aboutUs.tip=About Code Lutin +mapstoragemanager.action.connect=Connect +mapstoragemanager.action.connect.tip=Start a new connection +mapstoragemanager.action.disconnect=Disconnect +mapstoragemanager.action.disconnect.tip=Disconnect the current session +mapstoragemanager.action.edit=Edit +mapstoragemanager.action.edit.tip= +mapstoragemanager.action.exit=Exit +mapstoragemanager.action.exit.tip= +mapstoragemanager.action.file=File +mapstoragemanager.action.file.tip= +mapstoragemanager.action.fr=French +mapstoragemanager.action.fr.tip=Change to french language +mapstoragemanager.action.help=Help +mapstoragemanager.action.help.tip= +mapstoragemanager.action.language=Choose language +mapstoragemanager.action.language.tip= +mapstoragemanager.action.menuHelp=Help +mapstoragemanager.action.menuHelp.tip= +mapstoragemanager.action.preferences=Preferences +mapstoragemanager.action.preferences.tip= +mapstoragemanager.action.uk=English +mapstoragemanager.action.uk.tip=Change to english language +mapstoragemanager.action.visitSite=Visit our site +mapstoragemanager.action.visitSite.tip= +name\ base\ \:=Name base +ok=Validate +password\ \:=Password Added: trunk/msm-hbase/src/main/resources/i18n/mapstoragemanager-fr_FR.properties =================================================================== --- trunk/msm-hbase/src/main/resources/i18n/mapstoragemanager-fr_FR.properties (rev 0) +++ trunk/msm-hbase/src/main/resources/i18n/mapstoragemanager-fr_FR.properties 2010-02-10 06:50:08 UTC (rev 67) @@ -0,0 +1,32 @@ +Map\ Storage\ Manager=Map Storage Manager +TABLE\ NAME\ \:\ TODO= +login\ \:=Identifiant +mapstoragemanager.action.aboutUs=A propos +mapstoragemanager.action.aboutUs.tip=A propos de Code Lutin +mapstoragemanager.action.connect=Connexion +mapstoragemanager.action.connect.tip=Etablis une nouvelle connexion +mapstoragemanager.action.disconnect=D\u00E9connexion +mapstoragemanager.action.disconnect.tip=D\u00E9connecte la session courante +mapstoragemanager.action.edit=Edition +mapstoragemanager.action.edit.tip= +mapstoragemanager.action.exit=Quitter +mapstoragemanager.action.exit.tip=Quitte l'application +mapstoragemanager.action.file=Fichier +mapstoragemanager.action.file.tip= +mapstoragemanager.action.fr=Fran\u00E7ais +mapstoragemanager.action.fr.tip=Changer la langue en fran\u00E7ais +mapstoragemanager.action.help=Aide +mapstoragemanager.action.help.tip= +mapstoragemanager.action.language=choisir la langue +mapstoragemanager.action.language.tip= +mapstoragemanager.action.menuHelp=Aide +mapstoragemanager.action.menuHelp.tip=Aide contextuelle +mapstoragemanager.action.preferences=Pr\u00E9f\u00E9rences +mapstoragemanager.action.preferences.tip=Permet de configurer l'application +mapstoragemanager.action.uk=Anglais +mapstoragemanager.action.uk.tip=Changer la langue en anglais +mapstoragemanager.action.visitSite=Visiter notre site +mapstoragemanager.action.visitSite.tip= +name\ base\ \:=Nom de la base +ok=Valider +password\ \:=Mot de passe Added: trunk/msm-hbase/src/main/resources/i18n/mapstoragemanagerarch-en_GB.properties =================================================================== --- trunk/msm-hbase/src/main/resources/i18n/mapstoragemanagerarch-en_GB.properties (rev 0) +++ trunk/msm-hbase/src/main/resources/i18n/mapstoragemanagerarch-en_GB.properties 2010-02-10 06:50:08 UTC (rev 67) @@ -0,0 +1,32 @@ +Map\ Storage\ Manager= +TABLE\ NAME\ \:\ TODO= +login\ \:= +mapstoragemanager.action.aboutUs= +mapstoragemanager.action.aboutUs.tip= +mapstoragemanager.action.connect= +mapstoragemanager.action.connect.tip= +mapstoragemanager.action.disconnect= +mapstoragemanager.action.disconnect.tip= +mapstoragemanager.action.edit= +mapstoragemanager.action.edit.tip= +mapstoragemanager.action.exit= +mapstoragemanager.action.exit.tip= +mapstoragemanager.action.file= +mapstoragemanager.action.file.tip= +mapstoragemanager.action.fr= +mapstoragemanager.action.fr.tip= +mapstoragemanager.action.help= +mapstoragemanager.action.help.tip= +mapstoragemanager.action.language= +mapstoragemanager.action.language.tip= +mapstoragemanager.action.menuHelp= +mapstoragemanager.action.menuHelp.tip= +mapstoragemanager.action.preferences= +mapstoragemanager.action.preferences.tip= +mapstoragemanager.action.uk= +mapstoragemanager.action.uk.tip= +mapstoragemanager.action.visitSite= +mapstoragemanager.action.visitSite.tip= +name\ base\ \:= +ok= +password\ \:= Added: trunk/msm-hbase/src/main/resources/i18n/mapstoragemanagerarch-fr_FR.properties =================================================================== --- trunk/msm-hbase/src/main/resources/i18n/mapstoragemanagerarch-fr_FR.properties (rev 0) +++ trunk/msm-hbase/src/main/resources/i18n/mapstoragemanagerarch-fr_FR.properties 2010-02-10 06:50:08 UTC (rev 67) @@ -0,0 +1,32 @@ +Map\ Storage\ Manager= +TABLE\ NAME\ \:\ TODO= +login\ \:= +mapstoragemanager.action.aboutUs= +mapstoragemanager.action.aboutUs.tip= +mapstoragemanager.action.connect= +mapstoragemanager.action.connect.tip= +mapstoragemanager.action.disconnect= +mapstoragemanager.action.disconnect.tip= +mapstoragemanager.action.edit= +mapstoragemanager.action.edit.tip= +mapstoragemanager.action.exit= +mapstoragemanager.action.exit.tip= +mapstoragemanager.action.file= +mapstoragemanager.action.file.tip= +mapstoragemanager.action.fr= +mapstoragemanager.action.fr.tip= +mapstoragemanager.action.help= +mapstoragemanager.action.help.tip= +mapstoragemanager.action.language= +mapstoragemanager.action.language.tip= +mapstoragemanager.action.menuHelp= +mapstoragemanager.action.menuHelp.tip= +mapstoragemanager.action.preferences= +mapstoragemanager.action.preferences.tip= +mapstoragemanager.action.uk= +mapstoragemanager.action.uk.tip= +mapstoragemanager.action.visitSite= +mapstoragemanager.action.visitSite.tip= +name\ base\ \:= +ok= +password\ \:= Added: trunk/msm-hbase/src/main/resources/log4j.properties =================================================================== --- trunk/msm-hbase/src/main/resources/log4j.properties (rev 0) +++ trunk/msm-hbase/src/main/resources/log4j.properties 2010-02-10 06:50:08 UTC (rev 67) @@ -0,0 +1,14 @@ +# Global logging configuration +#log4j.rootLogger=ERROR, stdout, file +log4j.rootLogger=INFO, stdout +# Console output... +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) %M - %m%n +log4j.appender.file=org.apache.log4j.FileAppender +log4j.appender.file.file=mapstoragemanager.log +log4j.appender.file.layout=org.apache.log4j.PatternLayout +log4j.appender.file.layout.ConversionPattern=%5p [%t] (%F:%L) %M - %m%n + +log4j.logger.org.nuiton=INFO +log4j.logger.org.nuiton.mapstoragemanager=DEBUG Added: trunk/msm-hbase/src/site/doc/attachment.sh =================================================================== --- trunk/msm-hbase/src/site/doc/attachment.sh (rev 0) +++ trunk/msm-hbase/src/site/doc/attachment.sh 2010-02-10 06:50:08 UTC (rev 67) @@ -0,0 +1,64 @@ +#!/bin/bash +#MIRROR=http://mir2.ovh.net +HBASE_VERSION=0.20.3 +MIRROR=http://archive.apache.org + +HBASE_ARTIFACT=hbase-$HBASE_VERSION +HBASE_TAR=$HBASE_ARTIFACT.tar.gz +HBASE_URL=$MIRROR/dist/hadoop/hbase/$HBASE_ARTIFACT/$HBASE_TAR + +INSTALL_DIR=/tmp +HBASE_HOME=$INSTALL_DIR/$HBASE_ARTIFACT + +# get hbase tar +wget -O $INSTALL_DIR/$HBASE_TAR $HBASE_URL + +# extract into install dir +tar xvzf $INSTALL_DIR/$HBASE_TAR -C $INSTALL_DIR + +# echo java home to hbase-config.sh +echo "JAVA_HOME=$JAVA_HOME" >> $HBASE_HOME/bin/hbase-config.sh + +# add artifacts to local maven repository +GROUPID=org.apache.hadoop + +# dependencies +HADOOP_VERSION=0.20.1-hdfs127-core +ZOOKEEPER_VERSION=3.2.1 +COMMON_CLI_VERSION=2.0-SNAPSHOT + +echo mvn install:install-file -DgroupId=$GROUPID -DartifactId=zookeeper -Dversion=$ZOOKEEPER_VERSION -Dpackaging=jar \ + -Dfile=$HBASE_HOME/lib/zookeeper-$ZOOKEEPER_VERSION.jar + +echo mvn install:install-file -DgroupId=$GROUPID -DartifactId=hadoop -Dversion=$HADOOP_VERSION -Dpackaging=jar \ + -Dfile=$HBASE_HOME/lib/hadoop-$HADOOP_VERSION.jar + +echo mvn install:install-file -DgroupId=$GROUPID -DartifactId=hbase -Dversion=$HBASE_VERSION -Dpackaging=jar \ + -Dfile=$HBASE_HOME/hbase-$HBASE_VERSION.jar + +echo mvn install:install-file -DgroupId=commons-cli -DartifactId=commons-cli -Dversion=$COMMON_CLI_VERSION -Dpackaging=jar \ + -Dfile=$HBASE_HOME/lib/commons-cli-$COMMON_CLI_VERSION.jar + +# start hbase +# $HBASE_HOME/bin/start-hbase.sh + +# stop hbase +# $HBASE_HOME/bin/stop-hbase.sh + + +# HBASE_VERSION=0.20.0: +# HADOOP_VERSION=0.20.0-plus4681-core +# ZOOKEEPER_VERSION=r785019-hbase-1329 +# COMMON_CLI_VERSION=2.0-SNAPSHOT + +# HBASE_VERSION=0.20.1 ou 0.20.2: +# HADOOP_VERSION=0.20.1-hdfs127-core +# ZOOKEEPER_VERSION=3.2.1 +# COMMON_CLI_VERSION=2.0-SNAPSHOT + +# HBASE_VERSION=0.20.3: +# HADOOP_VERSION=0.20.1-hdfs127-core +# ZOOKEEPER_VERSION=3.2.2 +# COMMON_CLI_VERSION=2.0-SNAPSHOT + + Added: trunk/msm-hbase/src/site/doc/maven_hbase.rst =================================================================== --- trunk/msm-hbase/src/site/doc/maven_hbase.rst (rev 0) +++ trunk/msm-hbase/src/site/doc/maven_hbase.rst 2010-02-10 06:50:08 UTC (rev 67) @@ -0,0 +1,12 @@ + +Installation Artifact HBase +=========================== + +N'existant pas de repository maven hebergeant les artifacts hbase, il faut les +installer manuellement. + +le script attachment.sh fournis dans ce même dossier permet d'installer ceux-ci. + +A noter qu'il peut être intéréssant de modifier la variable INSTALL_DIR... + +Merci à Stephane Chorlet pour ce même script. \ No newline at end of file Added: trunk/msm-hbase/src/test/resources/log4j.properties =================================================================== --- trunk/msm-hbase/src/test/resources/log4j.properties (rev 0) +++ trunk/msm-hbase/src/test/resources/log4j.properties 2010-02-10 06:50:08 UTC (rev 67) @@ -0,0 +1,14 @@ +# Global logging configuration +#log4j.rootLogger=ERROR, stdout, file +log4j.rootLogger=INFO, stdout +# Console output... +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) %M - %m%n +log4j.appender.file=org.apache.log4j.FileAppender +log4j.appender.file.file=mapstoragemanager.log +log4j.appender.file.layout=org.apache.log4j.PatternLayout +log4j.appender.file.layout.ConversionPattern=%5p [%t] (%F:%L) %M - %m%n + +log4j.logger.org.nuiton=INFO +log4j.logger.org.nuiton.mapstoragemanager=DEBUG Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2010-02-09 14:52:00 UTC (rev 66) +++ trunk/pom.xml 2010-02-10 06:50:08 UTC (rev 67) @@ -28,6 +28,7 @@ <modules> <module>mapstoragemanagerarch</module> <module>msm-bighashmap</module> + <module>msm-hbase</module> </modules> <!-- ************************************************************* --> Added: trunk/src/site/doc/bigtable/HowToHbase.rst =================================================================== --- trunk/src/site/doc/bigtable/HowToHbase.rst (rev 0) +++ trunk/src/site/doc/bigtable/HowToHbase.rst 2010-02-10 06:50:08 UTC (rev 67) @@ -0,0 +1,71 @@ + +How to Hbase +============ + +Préparation de l'environnement de travail +----------------------------------------- + +prérequis : (nous travaillerons sur linux) + - SSH doit être installé. + +Télécharger Hadoop : +ftp://ftp.inria.fr/pub/Apache/hadoop/core/hadoop-0.20.1/hadoop-0.20.1.tar.gz +Télécharger Hbase : +ftp://ftp.inria.fr/pub/Apache/hadoop/hbase/hbase-0.20.2/hbase-0.20.2.tar.gz + +Dézipper les archives... + +Variables d'environnement +------------------------- + +Créer deux variables d'environnement "Hadoop_HOME" et "HBase_HOME" localisant les dossiers Hadoop-0.20.1 et HBase-0.20.2. +Ouvrir les fichiers ${Hadoop_Home}/conf/hadoop-env.sh et ${HBase_Home}/conf/hbase-env.sh et modifier/ajouter la variable d'environnement JAVA_HOME. + +Lancement des daemons +--------------------- + +Lancement du daemon hadoop : +${Hadoop_HOME}/bin/start-dfs.sh + +Lancement du daemon hbase : +${HBase_HOME}/bin/start-hbase.sh + +Lancement du shell Hbase +------------------------ + +${HBase_HOME}/bin/hbase shell + +Exemple +------- + +hbase> # Type "help" to see shell help screen +hbase> help +hbase> # To create a table named "mylittletable" with a column family of "mylittlecolumnfamily", type +hbase> create "mylittletable", "mylittlecolumnfamily" +hbase> # To see the schema for you just created "mylittletable" table and its single "mylittlecolumnfamily", type +hbase> describe "mylittletable" +hbase> # To add a row whose id is "x", to the column "mylittlecolumnfamily:x" with a value of 'x', do +hbase> put "mylittletable", "x" +hbase> # To get the cell just added, do +hbase> get "mylittletable", "x" +hbase> # To scan you new table, do +hbase> scan "mylittletable" + +Arrêt des daemons +----------------- + +Lancement du daemon hadoop : +${HADOOP_HOME}/bin/stop-dfs.sh +(On va dire que l'action n'est pas très rapide... Si elle marche.. ?) + +Lancement du daemon hbase : +${HBASE_HOME}/bin/stop-hbase.sh +${HBASE_HOME}/bin/stop-all.sh +(??? pour le premier il faut renseigner le nom du node ? Pour le second, je doute fort qu'il éteigne bien le daemon..) +---> Problème de port à la fac, je suppose. + + + + +So It's done +Now you have to work ! \ No newline at end of file Added: trunk/src/site/doc/bigtable/analyseBT.rst =================================================================== --- trunk/src/site/doc/bigtable/analyseBT.rst (rev 0) +++ trunk/src/site/doc/bigtable/analyseBT.rst 2010-02-10 06:50:08 UTC (rev 67) @@ -0,0 +1,92 @@ +Analyse de BigTable (de google Inc.) +===================================== + +But de l'analyse +---------------- + +Permettre la compréhension de Big Table et de ses diverses implémentations +ainsi que l'extraction d'interface pour le projet MSM. + +Introduction : Qu'est-ce que BigTable ? +--------------------------------------- + +BigTable est la spécification d'un système de stockage distribué permettant +de gérer des données. Il est conçu pour s'adapter fiablement à des tailles +de contenu allant jusqu'au "Peta". BigTable est utilisé pour plusieurs raisons : + +- Toucher un large ensemble d'applications +- Mise à l'échelle +- Très bonnes performances (temps de réponse...) +- Forte disponibilité + +Le modèle de données de BigTable +-------------------------------- + +Le modèle de données de BigTable se comporte comme un dictionnaire +multidimensionnel (matrice) indexé par le triplet +<row key, column key, timestamp>. Chaque valeur de ce dictionnaire +est un table d'octets. + +Les clés pour une rangée du dictionnaire sont des chaînes de charactères +arbitraires et BigTable maintient les données dans un ordre lexicographique +grâce à ce type de clé. + +ex de clé de rangée : "com.google.maps/index.html" (reversed URL) + +La portée d'une rangée est appelée "tablet", unité de distribution et d'équilibrage +de charge. + +Les clés de colonne sont groupées en ensembles appelés "famille de colonnes". +Une clé de colonne est nommé suivant le schéma : family:qualifier. +Les noms de famille doivent être lisibles facilement mais les qualificateurs peuvent +être des chaînes de charactères arbitraires + +ex de famille de colonne : "contents:" + +Ainsi, le contenu d'une cellule indexée par <com.google.maps/index.html, contents:, ?> +serait le contenu de la page "index.html" (le code html). +Une cellule peut contenir plusieurs versions de la même donnée via le mécanisme de timestamp. +Chaque cellule stocke plusieurs timestamp en ordre décroissant si bien que : + +- <com.google.maps/index.html, contents:, ts1> donne la version la plus récente du contenu. +- <com.google.maps/index.html, contents:, ts2> donne une version plus ancienne du contenu. + +Stockage +-------- + +BigTable utilise le système de fichier google GFS (Google File System) +pour stocker les logs et fichiers de données. + +Le format de fichier google SSTable est utilisé pour stocker les données +internes à BigTable. + +API BigTable (client) +--------------------- + +Voici les fonctionnalités prévues par la spécification BigTable : + +- Création de tables. +- Création de familles de colonne. +- Suppression de tables. +- Suppression de familles de colonne. +- Changement de cluster (?). +- Changement de table. +- Changement de méta données sur une famille de colonne (droits d'accès...). +- Ecriture des données dans une table. +- Suppression des données dans une table. +- Recherche des données dans une table depuis des rangées individuelles. +- Itération sur un sous-ensemble de données d'une table. +- Manipulation avancée des données : Transactions "Lecture - Modification - Ecriture" +sur une rangée simple (BigTable ne supporte pas les transactions par rangées multiples). +- Utilisation des cellules comme compteurs d'entier. +- Excécution de scripts clients dans l'espace d'adressage des serveurs (langage : sawzall). +- Calcul parallèle avec le framework MapReduce. + +Source +------ + +Cette analyse est une synthèse des éléments utiles dans le cadre du projet, issue de la +spécification même de Google Inc. +"BigTable: A Distributed Storage System for Structured Data" + +lien : labs.google.com/papers/bigtable-osdi06.pdf Added: trunk/src/site/doc/bigtable/bigTable.pdf =================================================================== (Binary files differ) Property changes on: trunk/src/site/doc/bigtable/bigTable.pdf ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/src/site/doc/bigtable/hbase-files.png =================================================================== (Binary files differ) Property changes on: trunk/src/site/doc/bigtable/hbase-files.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/src/site/doc/bigtable/projetHBase.rst =================================================================== --- trunk/src/site/doc/bigtable/projetHBase.rst (rev 0) +++ trunk/src/site/doc/bigtable/projetHBase.rst 2010-02-10 06:50:08 UTC (rev 67) @@ -0,0 +1,40 @@ +// mardi 12 janvier 2010 + +Technologies +------------ + + - UML + - JAVA + - JMX + - Jaxx / Swing + - HBase + - XML + - SVN + - RST + - Maven + +Contraintes +------------ + +- L'encodage des fichiers doit être en UTF-8. +- La norme checkstyle de sun doit être utilisée pour le code java (http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html). +- Pour les diagrammes UML, l'outil ArgoUML (v 0.28.1) doit être employé. +- Utilisation de Maven2 pour la construction, génération du site web… +- Couverture du code à 80% +- Environnement de développement libre (Eclipse, Netbeans, Vim) +- Utilisation de rst (ReStructuredText) pour la documentation +- Projet sous licence GPL v3 +- Code source en anglais + +Définitions +----------- + +HBase + +HMap + +RST + + + + Added: trunk/src/site/reports/week3.rst =================================================================== --- trunk/src/site/reports/week3.rst (rev 0) +++ trunk/src/site/reports/week3.rst 2010-02-10 06:50:08 UTC (rev 67) @@ -0,0 +1,23 @@ + + This week + ========== + - Test jaxx with ant (examples of jaxx) + - Creation of a user interface (the beginning) with many tests of css, java and jaxx files. + - Installation and test of HBase, Hadoop + - Creation of the core of the plugin architecture + - Documentation about BigTable + + + + Next week + ========= + - Upgrade ui with jaxx. + - Test dynamic method into jaxx. + + + + + + + + Added: trunk/src/site/reports/week4.rst =================================================================== --- trunk/src/site/reports/week4.rst (rev 0) +++ trunk/src/site/reports/week4.rst 2010-02-10 06:50:08 UTC (rev 67) @@ -0,0 +1,11 @@ + + This week + ========== + - Creation of a new interface BigTable. + - Developpment of the plugin BigHashMap, an implementation of the BigTable specification with HashMap. + - Upgrade of the ui with jaxx. + - Meeting with Code Lutin about jaxx. + + + Next week + ========= Added: trunk/src/site/reports/week5.rst =================================================================== --- trunk/src/site/reports/week5.rst (rev 0) +++ trunk/src/site/reports/week5.rst 2010-02-10 06:50:08 UTC (rev 67) @@ -0,0 +1,16 @@ + + This week + ========== + - Meeting with Benjamin Poussin. + - we note differents problems with the plugins BigHashMap : + - hashcode.. + - equals.. + + + Next week + ========= + - we must separate the project into subprojects maven modular : + - one sub-project for the MSM's architecture + - one sub-project for each plugin. + - one project which contain all subproject. + link : http://matthieu-lux.developpez.com/tutoriels/java/maven/?page=modules \ No newline at end of file