UNPKG

node-hdfs

Version:

A node module for accessing Hadoop's file system (HDFS)

230 lines (204 loc) 7.65 kB
var sys = require('sys') , HDFS = require('../node-hdfs'); var hdfs = new HDFS({host:"default", port:0}); // create file (overwrite if exists) var writeremote = function(cb) { var hdfs_path = "/tmp/test.txt" var buffer = new Buffer("The path of the righteous man is beset on all sides by the iniquities of the\n" + "selfish and the tyranny of evil men. Blessed is he who in the name of\n" + "charity and good will shepherds the weak through the valley of darkness, for\n" + "he is truly his brother's keeper and the finder of lost children. And I will\n" + "strike down upon thee with great vengeance and furious anger those who\n" + "attempt to poison and destroy my brothers. And you will know my name is the\n" + "Lord when I lay my vengeance upon thee.\n") hdfs.write(hdfs_path, function(writter) { writter.once("open", function(err, handle) { writter.write(buffer); writter.end(); }) writter.once("close", function(err) { cb(); }); }); } // Stat File var statremote = function(cb) { var hdfs_file_path = "/tmp/test.txt" hdfs.stat(hdfs_file_path, function(err, data) { if(!err) { console.log("File stat of '" + data.path + "' is: " + JSON.stringify(data)); // => {"type":"file","path":"hdfs://master:9000/tmp/test.txt","size":487,"replication":1,"block_size":67108864,"owner":"horaci","group":"supergroup","permissions":420,"last_mod":1315563055,"last_access":1315563055} cb(); } }); } // Read file var readremote = function(cb) { var hdfs_file_path = "/tmp/test.txt" hdfs.read(hdfs_file_path, 1024*1024, function(reader) { var readed = 0; reader.on("open", function(handle) { // do something when open }); reader.on("data", function(data) { readed += data.length; }); reader.on("end", function(err) { if(!err) { console.log("Finished reading data - Total readed: " + readed); } cb(); }); }); } // Copy HDFS file to local path var copylocal = function(cb) { var hdfs_file_path = "/tmp/test.txt" var local_out_path = "/tmp/test_horaci.txt"; hdfs.copyToLocalPath(hdfs_file_path, local_out_path, function(err, readed) { if(!err) { console.log(readed + " bytes copied from remote hdfs path " + hdfs_file_path + " to local path " + local_out_path); } cb(); }); } // Write local file to HDFS path var copyremote = function(cb) { var local_file_path = "/tmp/test_horaci.txt"; var hdfs_out_path = "/tmp/test_horaci.txt"; var start = new Date().getTime(); hdfs.copyFromLocalPath(local_file_path, hdfs_out_path, function(err, written) { if(!err) { var duration = new Date().getTime() - start; console.log(written + " bytes copied from local path " + local_file_path + " to remote hdfs path " + hdfs_out_path + " in " + duration + " ms."); } cb(); }); } var createdirectory = function(cb) { var hdfs_path = "/tmp/node-hdfs-test/a/b/c/d/e"; hdfs.mkdir(hdfs_path, function(err, result) { if(!err && result) { console.log("Directory " + hdfs_path + " created."); } else { console.log("Failed creating directory " + hdfs_path + ": " + err); } cb(); }); } var deletedirectory = function(cb) { var hdfs_path = "/tmp/node-hdfs-test/a/b/c/d/e"; hdfs.rm(hdfs_path, {}, function(err, result) { if(!err && result) { console.log("Directory " + hdfs_path + " deleted."); } else { console.log("Failed deleting " + hdfs_path + ": " + err); } var hdfs_path_non_recursive = "/tmp/node-hdfs-test/a/b/c"; hdfs.rm(hdfs_path_non_recursive, {}, function(err, result) { if(!err && result) { console.log("Glups!, deleted a folder " + hdfs_path_non_recursive + " with subfolders without recursive or force flags?"); } else { console.log("Correctly refused deleting " + hdfs_path_non_recursive + ": " + err); } var hdfs_path_recursive = "/tmp/node-hdfs-test/a/b/c"; hdfs.rm(hdfs_path_recursive, {recursive:true}, function(err, result) { if(!err && result) { console.log("Deleted folder " + hdfs_path_recursive + " with recursive flag"); } else { console.log("Error deleting folder " + hdfs_path_recursive + ": " + err); } var hdfs_path_force = "/tmp/node-hdfs-test/a"; hdfs.rm(hdfs_path_force, {force:true}, function(err, result) { if(!err && result) { console.log("Deleted folder " + hdfs_path_force + " with force flag"); } else { console.log("Error deleting folder " + hdfs_path_force + ": " + err); } var hdfs_path_dir = "/tmp/node-hdfs-test/"; hdfs.rmdir(hdfs_path_dir, function(err, result) { if(!err && result) { console.log("Removed empty directory " + hdfs_path_dir) } else { console.log("Failed removing empty directory " + hdfs_path_dir) } var hdfs_path_file = "/tmp/test.txt"; hdfs.rmdir(hdfs_path_file, function(err, result) { if(!err && result) { console.log("Glups! Removed file with rmdir: " + hdfs_path_file) } else { console.log("Correctly refused deleting file with rmdir " + hdfs_path_file + ": " + err) } cb(); }) }) }); }); }); }); } var listremote = function(cb) { var hdfs_path = "/user/horaci" hdfs.list(hdfs_path, function(err, files) { if(!err) { console.log("Listing non-recursive of " + hdfs_path + " has " + files.length + " files"); } cb(); }); } var listremoterecursive = function(cb) { var hdfs_path = "/user/horaci" hdfs.list(hdfs_path, {recursive:true}, function(err, files) { if(!err) { console.log("Listing recursive of " + hdfs_path + " has " + files.length + " files"); } cb(); }); } var appendfile = function(cb) { var hdfs_path = "/tmp/test-horaci2.txt" var append_file = function(str, callback) { hdfs.append(hdfs_path, function(appender) { appender.on("open", function( err, handle) { appender.write(new Buffer(str)); appender.end(); }) appender.on("close", function(err) { callback(); }); }) } var create_file = function(callback) { hdfs.write(hdfs_path, function(writter) { writter.once("open", function(err, handle) { writter.write(new Buffer("Hello create file.\n")); writter.end(); }) writter.on("close", function(err) { callback(); }); }); } create_file(function() { console.log("Create file with some data: " + hdfs_path); append_file("First append\n", function() { append_file("Second append\n", function() { console.log("Appended data to file: " + hdfs_path); cb(); }) }) }); } //--------------- console.log("Connecting to HDFS server..."); hdfs.connect(); // (optional, first command will connect if disconnected) console.log("Connected!"); var ops = [writeremote, statremote, readremote, copylocal, copyremote, listremote, listremoterecursive, createdirectory, deletedirectory, appendfile]; var nextOp = function() { if(next=ops.shift()) next(nextOp)} process.nextTick(nextOp); //-------------------- process.on('SIGINT', function () { console.log('Got SIGINT, disconnecting...'); hdfs.disconnect(); process.exit(0); });