关于Hadoop的API写文件的备份数问题

2019-03-28 13:11|来源: 网络

今天用Hadoop API打算往hadoop集群创建几个文件,然后写入数据试试,结果问题发生了,我的配置文件备份数是1,但是不管我怎么创建,创建的文件备份数都是3。代码如下:

 public static void testHDFS() throws IOException{
  String str="hdfs://cloudgis4:9000/usr/tmp/";
  Path path=new Path(str);
  Configuration conf=new Configuration();
  FileSystem hdfs=path.getFileSystem(conf);
  long begin=System.currentTimeMillis();
  for(int i=0;i<10000;i++){
   byte [] kkk=new byte[10000+1*i];
   FSDataOutputStream fsDataOut=hdfs.create(new Path(str+i));
   fsDataOut.write(kkk);
   fsDataOut.close();
   //hdfs.close();
  }
  long end=System.currentTimeMillis();
  System.out.println("hdfs:"+(end-begin));
 }

很奇怪,上网搜了一下发现了这个API:setReplication。用了这个之后,创建的文件备份数还是3,搜了下这个API的使用,发现这个API只能更改已经存在的文件的备份数。如果先创建再修改备份,无疑增加了框架的负担。后来想了想,明明配置文件修改成了1,那么就应该是这个应用程序没有读取配置文件。所以手动读取下配置文件就可以了。

conf.addResource(new Path("/usr/local/hadoop/conf/hdfs-site.xml"));

ps:hbase 权威指南上有这样一句话:

If you are configuring an IDE to run an HBase client, you could include the conf/

directory on your classpath. That would make the configuration files discoverable by

the client code.

更多Hadoop相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13

相关问答

更多
  • 使用数据库管理面板后台备份或者帝国备份王,参考GoDaddy空间数据库管理教程
  • 数据库的自动备份,可以减轻维护者的工作量也便于系统恢复,对于比较重要的数据库,最好还是设置下自动备份。 工具/原料 navicat for mysql mysql 5.5 方法/步骤 1. 打开navicat客户端,连上mysql后,双击左边你想要备份的数据库。点击“计划”,再点击“新建批处理作业”。 2. 双击上面的可用任务,它就会到下面的列表里去,代表你选择了这个任务。 3. 点击保存,弹出个命名对话框,给这个任务取个名字,点击“确定” 4. 点击“设置”计划任务。 5. 弹出的对话框,选择“计划”,再 ...
  • 个人认为,既然有数据库,就要有DBA,DBA不但是一种职位,还是一种态度。备份数据库就应该是DBA的事情,而想使用存储过程来备份数据库是不现实的,作为某个时间点的镜像倒是还可以。 因为数据库崩溃了,如果数据丢失,存储过程再怎么做也没办法恢复。 另外,存储过程不是拿来做备份的,而是提供可靠和高效率计算的。 建议:使用批处理脚本,创建定时任务,调用 mysqldump.exe 程序来做备份。
  • 在Linux上安装MySQL并建立测试库,编写shell脚本对此库使用mysqldump进行定时备份和历史备份文件清理(保留3天),注意脚本的通用性和扩展性 1 mysq数据库的安装 [sql] view plain copy #安装服务端 yum install mysql-server yum install mysql-devel #安装客户端 yum install mysql #启动mysql service mysqld start 或 /etc/init.d/mysqld start #停止m ...
  • windows下: 具体来说,我们若需利用任务计划程序自动运行则应执行如下步骤: 1.单击“开始”按钮,然后依次选择“程序”→“附件”→“系统工具”→“任务计划”(或者是“设置”→“控制面板”→“任务计划”),启动Windows 2000的任务计划管理程序。 2.在“任务计划”窗口中双击“添加任务计划”图标,启动系统的“任务计划向导”,然后单击“下一步”按钮,在给出的程序列表中选择需要自动运行的应用程序,然后单击“下一步”按钮。 设置适当的任务计划名称并选择自动执行这个任务的时间频率(如 ...
  • 没事,只有恢复的时候和现在的编码配置一样就行。
  • MYSQL备份数据库[2021-10-03]

    定期的备份可使我们数据库崩溃造成的损失大大降低。在MySQL中进行数据备份的方法有两种,一种是使用mysqldump程序,一种是使用mysqlhotcopy、cp、tar或cpio等打包程序直接拷贝数据库文件。mysqldump程序备份数据库较慢,但它生成的文本文件便于移植。使用mysqlhotcopy等程序备份速度快,因为它直接对系统文件进行操作,需人为协调数据库数据的备份前后一致性。 使用mysqldump备份数据库其实就是把数据库转储成一系列CREATE TABLE和INSERT语句,通过这些语句我 ...
  • MYSQL备份数据库[2021-12-26]

    定期的备份可使我们数据库崩溃造成的损失大大降低。在MySQL中进行数据备份的方法有两种,一种是使用mysqldump程序,一种是使用mysqlhotcopy、cp、tar或cpio等打包程序直接拷贝数据库文件。mysqldump程序备份数据库较慢,但它生成的文本文件便于移植。使用mysqlhotcopy等程序备份速度快,因为它直接对系统文件进行操作,需人为协调数据库数据的备份前后一致性。 使用mysqldump备份数据库其实就是把数据库转储成一系列CREATE TABLE和INSERT语句,通过这些语句我们 ...
  • 用帝国备份王 phpmyadmin针对于100M以上的数据库 在网速不好的情况下老挂掉落 我如今都用帝国备份王 很爽的 备份三五百兆的数据库不是问题
  • mysqldump 是一个 可执行程序, 不是 sql 语句里面的一个命令。 进入MySQL目录下的bin文件夹 mysqldump -u 用户名 -p 数据库名 > 导出的文件名 C:\Program Files\MySQL\MySQL Server 5.5\bin>mysqldump -u root -p Test > test.sql Enter password: ******** C:\Program Files\MySQL\MySQL Server 5.5\bin>dir *.sql 驱动器 C ...