在开发hadoop的时候去查找了一下eclipse marketplace是没有找到hadoop的插件,上网又找了一下发现原来hadoop中其实是带有这样的插件的,
其实很简单只要将这个插件复制到eclipse/plugins目录下然后重启eclipse就可以了
重启之后就可以看到eclipse == 》window ==》 preferences 可以看到多了一个Hadoop Map/Reduce 点击Browse按钮找到你的hadoop的解压目录如图:
配置好了环境之后我们来创建一个本地连接,点击Windows==》show view ==》 other 选择MapReduce Tools ==》Map/Reduce Location
然后我们新建一个本地连接,这这里右键 New hadoop Location
然后我们的配置host:这里的Map/Reduce Master对应hadoop配置文件中的mapred-site.xml
DFS Master的配置对应core-site.xml详细请看图
配置好后的应该是这样的:
这里配置好之后我们可以启动hadoop来简单的测试一下
如果跟上面的输出信息一样证明正常启动了,如果没有正常启动估计是在配置的时候除了问题。下面我给几个简单的小测试程序可以运行一下
package com.hadoop.test; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; /** * copy local file to hadoop system 将文件拷贝到HDFS * @author root * */ public class ConpyFile { public static void main(String[] args) { //get local system configuration Configuration conf = new Configuration(); try { FileSystem hdfs = FileSystem.get(conf); Path src = new Path("/home/admin/test3"); Path dst = new Path("/"); hdfs.copyFromLocalFile(src, dst);; FileStatus files[] = hdfs.listStatus(dst); for(int i = 0; i < files.length; i++){ System.out.println("status :"+files[i]); } } catch (IOException e) { e.printStackTrace(); } } }
这里注意我的文件是已经创建的然后拷贝到hdfs上如果在上传的时候找不到文件可能跟linux下的权限有关系。建议修改权限就可以了。
package com.hadoop.test; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; /** * create a hdfs file 创建hdfs文件 * @author root * */ public class CreateHDFSFile { public static void main(String[] args) { Configuration conf = new Configuration(); //获取系统的hadoop的配置环境 try { FileSystem hdfs = FileSystem.get(conf);//获取文件系统对象 byte bytes[] = "Hello word !".getBytes(); Path dfs = new Path("/test"); FSDataOutputStream outputStream = hdfs.create(dfs); outputStream.write(bytes, 0, bytes.length); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
重命名hadoop系统中的一个文件的名称:
package com.hadoop.test; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; /** * rename hdfs file * @author root * */ public class ReNameHDFSFile { public static void main(String[] args) { Configuration conf = new Configuration(); FileSystem hdfs; try { hdfs = FileSystem.get(conf); Path frpath = new Path("/test3"); Path topath = new Path("/test1"); boolean isRename = hdfs.rename(frpath, topath); System.out.println("rename is finish:"+isRename); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
检查文件的最后的修改时间:
package com.hadoop.test; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; /** * check hdfs file last modify time * @author root * */ public class CheckFileLastModifyTime { public static void main(String[] args) { Configuration conf = new Configuration(); try { FileSystem hdfs = FileSystem.get(conf); Path fpath = new Path("/test1"); FileStatus fileStatus = hdfs.getFileStatus(fpath); long lastModifyTime = fileStatus.getModificationTime(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("the last modify time is :"+sdf.format(new Date(lastModifyTime))); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }