您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 国科大Hadoop作业
运行环境:在windows10/64bit上安装虚拟机,运行UbuntuLinux14.04.2,JDK1.7,Hadoop2.6.0,HBase0.98等在单机上构成伪分布式环境目的:学习Hadoop和HBase的基本编程使用。在Hadoop框架下,采取Mapreduce模式处理数据。学习java语言的基本编程使用。运行实例①:从HDFS中读取文件,进行中间处理,然后写入HBase数据库。①从HDFS中读取文件。如图所示,以part.tbl表为例,可以看出,每一行是一个关系型记录,每个列用|分开。从第0列开始计数。主要处理:从HDFS中读取文件操作。②写入HBase数据库。首先了解HBase数据模型,如图所示,key包括rowkey与column两部分。所有的rowkey是按顺序存储的。其中column又有columnfamily前缀。而columnfamily是需要事先声明的,种类有限(例如~10或~100),columnkey可以有很多。具体存储时,每个columnfamily将分开存储(类似列式数据库),如图所示,每个columnfamily可以对应为一个3列的Table。③中间处理。主要是做Hashbaseddistinct。主要内容:从HDFS中读取part.tbl表中的数据。选择第7列大于1800的元组,并把符合条件元组的第3,4,5列数据存入hashtable,使得哈希表的key为第3,4,5列数据,Value为空。最后扫描输出hashtable中的所有项。其中命令行编译格式为:javaHw1GrpXR=/hw1/part.tblselect:R7,gt,1800distinct:R3,R4,R5其中,R=/hw1/part.tbl为文件路径R7为第7列(同理,R3,R4,R5。注意:这里是从第0列开始)gt为大于即(这里的条件还可以为:=ge;==eq;!=ne;=le;lt)④实验步骤:1)starthdfsandhbase2)编译运行Hw1Grp4.java3)进入hbaseshell终端4)在hbaseshell终端,查看Result表是否写入成功。如图所示,在Result表中,共有201条数据5)退出hbaseshell终端6)stophdfsandhbase附录:Hw1Grp4.java源代码importjava.io.*;importjava.net.URI;importjava.net.URISyntaxException;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.FSDataInputStream;importorg.apache.hadoop.fs.FSDataOutputStream;importorg.apache.hadoop.fs.FileSystem;importorg.apache.hadoop.fs.Path;importorg.apache.hadoop.io.IOUtils;importjava.util.HashMap;importjava.util.Iterator;importjava.util.Set;importjava.util.Map;importjava.io.IOException;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.hbase.HBaseConfiguration;importorg.apache.hadoop.hbase.HColumnDescriptor;importorg.apache.hadoop.hbase.HTableDescriptor;importorg.apache.hadoop.hbase.MasterNotRunningException;importorg.apache.hadoop.hbase.TableName;importorg.apache.hadoop.hbase.ZooKeeperConnectionException;importorg.apache.hadoop.hbase.client.HBaseAdmin;importorg.apache.hadoop.hbase.client.HTable;importorg.apache.hadoop.hbase.client.Put;importorg.apache.log4j.*;importorg.apache.hadoop.conf.Configuration;publicclassHw1Grp4{publicstaticvoidHBaseTest(HashMapString,Stringmap,String[]colName,String[]colNum)throwsMasterNotRunningException,ZooKeeperConnectionException,IOException{Logger.getRootLogger().setLevel(Level.WARN);//createtabledescriptorStringtableName=Result;HTableDescriptorhtd=newHTableDescriptor(TableName.valueOf(tableName));//createcolumndescriptorHColumnDescriptorcf=newHColumnDescriptor(res);htd.addFamily(cf);//configureHBaseConfigurationconfiguration=HBaseConfiguration.create();HBaseAdminhAdmin=newHBaseAdmin(configuration);//deletethetableexistedif(hAdmin.tableExists(tableName)){//System.out.println(Tablealreadyexists);DeleteTable(tableName);hAdmin.createTable(htd);System.out.println(table+tableName+createdsuccessfully);}else{hAdmin.createTable(htd);System.out.println(table+tableName+createdsuccessfully);}hAdmin.close();//putthedatafromhashMapintoHBasedatabase//becauseofthevariableofinputparameters,weshouldmakeaforcycleSetStringset=map.keySet();Iteratorit=set.iterator();inti=0;HTabletable=newHTable(configuration,tableName);while(it.hasNext()){Stringkey=(String)it.next();String[]col=key.split(\\|);Stringj=String.valueOf(i);Putput=newPut(j.getBytes());/*put.add(res.getBytes(),colName[1].getBytes(),col[0].getBytes());table.put(put);put.add(res.getBytes(),colName[2].getBytes(),col[1].getBytes());table.put(put);put.add(res.getBytes(),colName[3].getBytes(),col[2].getBytes());table.put(put);*/for(intx=1;xcolName.length;x++){put.add(res.getBytes(),colName[x].getBytes(),colNum[x-1].getBytes());table.put(put);}i++;}table.close();System.out.println(putsuccessfully);}publicstaticvoidDeleteTable(Stringtablename)throwsIOException{//InstantiatingconfigurationclassConfigurationconf=HBaseConfiguration.create();//InstantiatingHBaseAdminclassHBaseAdminadmin=newHBaseAdmin(conf);//disablingtablenamedempadmin.disableTable(tablename);//Deletingempadmin.deleteTable(tablename);System.out.println(Tabledeleted);}publicstaticvoidmain(String[]args)throwsIOException,URISyntaxException{//processingtheargumentlistsfromString[]args//andmakingitmoregeneral//args[0]String[]fileName=args[0].split(=);//args[1]String[]req=args[1].split(\\:|\\,);String[]bendan=req[1].split(R);Integernum=Integer.valueOf(bendan[1]);//args[2]String[]colName=args[2].split(:|,);String[]colNum=newString[colName.length-1];//thereiscolName.length-1notcolName.length-2yuejieyichufor(intk=1;kcolName.length;k++){colNum[k-1]=(colName[k].split(R))[1];}Stringfile=hdfs://localhost:9000+fileName[1];Configurationconf=newConfiguration();FileSystemfs=FileSystem.get(URI.create(file),conf);Pathpath=newPath(file);FSDataInputStreamin_stream=fs.open(path);BufferedReaderin=newBufferedReader(newInputStreamReader(in_stream));//analyzetheinputparameter,thentransferintotheproperaction.Strings;HashMapString,Stringmap=newHashMapString,String();while((s=in.readLine())!=null){String[]strArray=s.split(\\|);StringstrAppend=null;booleanp=false;//Stringsymbol=eq;//shibushifangdaowaimiangenghao???if(req[2].compareTo(gt)==0){if(Float.valueOf(strArray[num])Float.valueOf(req
本文标题:国科大Hadoop作业
链接地址:https://www.777doc.com/doc-4431970 .html