hello,
       I have a program loading formated data into HTable, but it crashed
when connecting to the quorum server because of wrong configuration, seems
that it load configuration from hbase-default.xml, not from hbase-site.xml.

       my hadoop cluster has 35 nodes, and the administrator has set up 4
quorum server and 5 region server(too few?). we have copied the Hbase
configuration folder to every hadoop task tracker.

       the job failed during the reduce phase, raised exceptions "
NoServerForRegionException", I have checked the job log on some nodes, the
connection string is set to "localhost:port" instead of the configuration in
hbase-site.xml.

       my code is as follows, I think the problem may be from the *doJob
method(when I do the configuration):*
       please help.
*
*
*import java.io.IOException;*
*import java.util.Iterator;*
*
*
*import org.apache.hadoop.conf.Configuration;*
*import org.apache.hadoop.conf.Configured;*
*import org.apache.hadoop.hbase.HBaseConfiguration;*
*import org.apache.hadoop.hbase.HColumnDescriptor;*
*import org.apache.hadoop.hbase.HTableDescriptor;*
*import org.apache.hadoop.hbase.TableExistsException;*
*import org.apache.hadoop.hbase.client.HBaseAdmin;*
*import org.apache.hadoop.hbase.client.Put;*
*import org.apache.hadoop.hbase.io.HbaseMapWritable;*
*import org.apache.hadoop.hbase.io.ImmutableBytesWritable;*
*import org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil;*
*import org.apache.hadoop.hbase.mapreduce.TableOutputFormat;*
*import org.apache.hadoop.hbase.mapreduce.TableReducer;*
*import org.apache.hadoop.hbase.util.Bytes;*
*import org.apache.hadoop.io.LongWritable;*
*import org.apache.hadoop.io.Text;*
*import org.apache.hadoop.mapred.JobClient;*
*import org.apache.hadoop.mapred.JobConf;*
*import org.apache.hadoop.mapreduce.Job;*
*import org.apache.hadoop.mapreduce.Mapper;*
*import org.apache.hadoop.mapreduce.Mapper.Context;*
*import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;*
*import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;*
*import org.apache.hadoop.util.Tool;*
*
*
*public class FasterMidImport extends Configured {*
*
*
*......*
* **private static Configuration conf = new HBaseConfiguration();*
*
*
* **public static class InnerMap extends Mapper<LongWritable, Text, Text,
Text> {*
*
*
* **protected void map(LongWritable key, Text value, Context context)*
* **throws IOException, InterruptedException {*
* ......*
* **context.write(new Text(rowKey), new Text(columnid + "\t" + value));*
* **}*
* **}*
*
*
* **public static class MyTableReducer extends TableReducer<Text, Text,
Text> {*
* **protected void reduce(Text key, Iterable<Text> values, Context context)*
* **throws IOException, InterruptedException {*
* **Iterator<Text> iter = values.iterator();*
* **Put put = new Put(key.toString().getBytes());*
* **int cellCount = 0;*
* **while (iter.hasNext()) {*
* **String[] splits = iter.next().toString().split("\t");*
* **if (splits.length < 2) {*
* **continue;*
* **}*
* **String query = splits[0].substring(splits[0].indexOf(':') + 1);*
* **put.add("queries".getBytes(), query.getBytes(), splits[1]*
* **.getBytes());*
* **if (++cellCount > 10000) {*
* **cellCount = 0;*
* **context.write(key, put);*
* **put = new Put(key.toString().getBytes());*
* **}*
* **}*
* **if (0 < cellCount) {*
* **context.write(key, put);*
* **}*
* **}*
* **}*
*
*
* **public void doJob(String[] args) throws IOException {*
* **conf.set("input.dir", args[0]);*
* **conf.set("table.name", args[1]);*
* **try {*
* **String tblName = conf.get("table.name");*
* **try {*
* **HBaseAdmin admin = new HBaseAdmin((HBaseConfiguration) conf);*
* **if (!admin.tableExists(tblName)) {*
* **Thread.currentThread().sleep(2000);*
* **HTableDescriptor tblDesc = new HTableDescriptor(tblName);*
* **tblDesc.addFamily(new HColumnDescriptor("queries"));*
* **admin.createTable(tblDesc);*
* **}*
* **} catch (TableExistsException e) {*
* **} catch (InterruptedException e) {*
* **e.printStackTrace();*
* **}*
* **} catch (IOException e) {*
* **e.printStackTrace();*
* **}*
* **Job job = new Job(conf);*
* **// Job job = new Job(new Configuration());*
* **job.setJarByClass(FasterMidImport.class);*
* **job.setJobName("Faster-midImport: import " + conf.get("input.dir")*
* **+ "into" + conf.get("input.dir"));*
*
*
* **job.setOutputKeyClass(Text.class);*
* **job.setOutputValueClass(Text.class);*
* **job.setOutputFormatClass(TableOutputFormat.class);*
*
*
* **job.setInputFormatClass(TextInputFormat.class);*
* **FileInputFormat.setInputPaths(job, conf.get("input.dir"));*
*
*
* **job.setMapperClass(InnerMap.class);*
*
*
* **job.setMapOutputKeyClass(Text.class);*
* **job.setMapOutputValueClass(Text.class);*
*
*
* **job.setNumReduceTasks(20);*
* **//
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
*
* **TableMapReduceUtil.initTableReducerJob(conf.get("table.name"),*
* **MyTableReducer.class, job);*
* **try {*
* **job.submit();*
* **while (!job.isComplete()) {*
* **Thread.currentThread().sleep(1000);*
* **System.out*
* **.println("Map: " + (job.mapProgress() * 100)*
* **+ "% ... Reduce: "*
* **+ (job.reduceProgress() * 100) + "%");*
*
*
* **}*
* **} catch (InterruptedException e) {*
* **e.printStackTrace();*
* **} catch (ClassNotFoundException e) {*
* **e.printStackTrace();*
* **}*
* **}*
* **static int printUsage() {*
* **System.err.println("Usage: FasterMidImport <input-dir> <table_name>");*
* **return -1;*
* **}*
* **/***
* ** * * Run*
* ** * */*
* **public int run(String[] args) throws Exception {*
* **if (args.length < 2) {*
* **return printUsage();*
* **}*
* **this.doJob(args);*
* **return 0;*
* **}*
*
*
* **public static int main(String[] args) throws Exception {*
* **new FasterMidImport().run(args);*
* **return 0;*
* **}*
*}*


-- 
       best wishes.
                            steven

Reply via email to