2009年10月31日土曜日

Hadoop Plugin for Eclipse 3.5.1 Galileo

Recently I started trying Apache Hadoop and there were some people wrote about Eclipse Plugin.I checked out latest source code but it seems they didn't include the plugin no longer, so I checked out version 0.19.2 that was the newest one I found that had the plugin.

I tried with hadoop 0.19.2 however the plugin didn't work well on Eclipse 3.5.1 Galileo.
The error log said they couldn't find a class and couldn't instanciate the plugin when they try to run Hadoop program. I looked through the source and found that was using "internal" class. It seemed the class was no longer in the latest Eclipse. I changed "import" sentences, fixed one bug about null checking and finally got the plugin working.

===========================
The system specification was :

Host OS : Mac OSX 10.5
Guest OS on VMware : Ubuntu 9.04

Eclipse 3.5.1 Galileo
Hadoop 0.19.2
===========================

I uploaded the fixed plugin here. In case, if anyone is trying to use the plugin, the following that I write about installation and usage will help.


First, you need to install Hadoop. I prefere downloading not the latest but version 0.19.2.
Quick Start will help greatly. Latest one( currently 0.20.1 ) is using separated files for configuration however you can just find same entries in conf/hadoop-site.xml (you might need to copy from hadoop-default.xml first time ) . Please run hadoop and create directory input on Hadoop File System (HDFS) before you go to next step. You may also want't to copy some text files in it as it is done in Quick Start.

Second, download the plugin and copy it in "plugins" directory then start Eclipse. You will see "Map/Reduce Project" when you try to create "New Project". However, you can't create its project until you configure the plugin. So, open "Preference -> Hadop Map/Reduce" and set Hadoop installed directory(fig 1). Finally we can start creating and run Hadoop project.

fig 1 : Setup Hadoop installed directory
  1. Create new Hadoop Project then Eclipse will lead you to Hadoop Plugin Perspective. Now, you can see blue elephant icons.
  2. Open "Window->Show View->Other->MapReduce Tools->Map/Reduce Locations"(fig 2).
  3. Click "Blue Elephant" in "Map/Reduce Locations" view and define Hadoop location. For testing you need to edit "Location Name", "Host" and "Port" in General tab, also you need to set "eclipse.plugin.jobtracker.host", "eclipse.plugin.jobtracker.port", "fs.default.name" (fig 3, 4).
  4. Check if you can connect to HDFS from Eclipse. In "Project Explorer", open DFS Locations.
  5. Create Hadoop programs (you can use this sample) and try running them. You can select a class that has main and "Right Click -> Run As ->Run on Hadoop" (fig 5).
  6. Choose Location and Finish then you will see Hadoop outputs in Console.
fig 2 : Map/Reduce Location View and DFS Explorer

fig 3, 4 : Hadoop Location setup


fig 5 : Running Hadoop Program


2009年9月2日水曜日

NyArtoolkit on jMonkeyEngine

I was trying to use jMonkeyEngine for a 3D engine with NyArtoolkit these few days. I uploaded my first result on Youtube.

jMonkeyEngine is a 3D game engine written in Java. It supports many features such as collisions, particle systems, shaders, terrain system and so on.


Here, I put my source codes however I modified original NyARToolkit utils library for a compatibility between mac and windows so they might not work. If you have any question, feel free to ask.

2009年3月21日土曜日

Source code for Java3D Collada1.4.1 Loader

After I answered Mariano's comment I got another work and was a bit busy so it got so late to upload my source code here. This source code is originally from j3d-incubator project so every rights should follow their policy except some codes that I wrote entirely new. My codes are published under GPL for now. I'd love to marge my code to incubator project when I get time.

Sorry for this inconvenience.

You can download source code here.

2009年1月26日月曜日

Java3D model loader for Google SketchUp

I'm trying to implement a Java3D model loader for Collada 1.4.1 format.
There's an implementation on j3d-incubator project however it doesn't seem that is supporting many functions so that I checked out from their repository and tried implementing additional functions.
When I get some result, I'd like to submit my codes.

For the first step, I tried loading models that were made with Google SketchUp (it's using Collada format) 
As you know, there is a lot of great models on 3D Warehouse and it must be very helpful if you can load them into your java 3d application.

I made a very simple applet to try loading them.
(I sincerely ask you guys to accept my personal signature that is needed to access local files by the applet)


It hasn't been supporting a lot of functions however it is able to load geometry, basic materials (such as diffuse or ambient colours) and simple textures.
Please be careful loading a large file, it might require a huge amount of memory space.

You can also download jar binary archive.
Here's a code fragment to try it. Please refer Java3D object loader usage that you can find on several web sites. 
loader.KmzLoader l = new loader.KmzLoader();
Scene s = l.load(new URL(path));
BranchGroup bg = s.getSceneGraph();
You may also need to adjust camera location or things.
I found out if the model is too large Java3D is not able to handle z buffer orders so then you need to use Transform group to scale it smaller. 
If someone has information on this problem and solution please let me know.

Hope you can enjoy it. :)
When you find bugs or have any requirements, I'd be grateful if you leave messages here.

2009年1月22日木曜日

Compiling Collada 1.5 schema by JAXB

I had a problem compiling Collada 1.5 schema by JAXB so I write problems and the way I solved it.

What you need to prepare is
  1. Download Collada 1.5.0 Schema (if the extension is "txt", the change it to "xsd")
  2. Download latest JAXB (currently 2.1.9 is the latest)
  3. Open and place them as you need. (also set a path for Java and others)
First, I tried the command "xjc collada_schema_1_5.xsd" and got the following errors.

[ERROR] Property "Source" is already defined. Use <jaxb:property> to resolve this conflict.
line 8785 of file:/Users/shiva/TMP/collada/collada_schema_1_5.xsd
...

This problem is occurred by name collision it seemed and I found a solution here
"simpleMode.xml" helped to avoid the first problem. (and it worked well for collada 1.4 schema)
The Command was 

"xjc collada_schema_1_5.xsd -extension simpleMode.xml"
(make sure the path to "simpleMode.xml")

When I tried it, "xjc" died of OutOfMemory error however I could not find a way to enlarge memory space for "xjc" command.
So that I needed to call "xjc" from "java" command as follows.

"java -Xmx1024m -jar jaxb-xjc.jar collada_schema_1_5.xsd -extension simpleMode.xsd"

This worked enough and I could get java classes for the schema.