Alluxio HA 写入文件失败

Alluxio HA环境,今天发生,用户无法写入文件的情况. 创建文件夹,是正常的.但是最后copyFromLocal 文件的时候,就没有任何反应.最后可以看到这个新建的文件.但是文件size是0.

alluxio fs copyFromLocal test.txt /user/mytest/prefix2

最后决定重启一下master看看结果.然后重启,然后...就没有然后了.....Master起不来了!!!!

查看master.log发现问题,刚开始,是正常的应用log file,在 inodeId 52,无法正常打开.导致master启动失败.

2018-07-25 16:39:12,897 INFO  logger.type (JournalTailer.java:processNextJournalLogFiles) - FileSystemMaster: Processing a completed log file.

.......

2018-07-25 16:39:21,461 INFO  logger.type (JournalReader.java:getNextInputStream) - Opening journal log file: hdfs://azbeta/user/alluxio/journal/FileSystemMaster/completed/log.00000000000000000007

2018-07-25 16:39:21,512 INFO  logger.type (JournalTailer.java:processNextJournalLogFiles) - FileSystemMaster: Processing a completed log file.

2018-07-25 16:39:21,520 ERROR logger.type (ServerUtils.java:run) - Uncaught exception while running Alluxio master, stopping it and exiting.

java.lang.RuntimeException: alluxio.exception.FileDoesNotExistException: inodeId 52 does not exist

at alluxio.master.file.FileSystemMaster.processJournalEntry(FileSystemMaster.java:347)

at alluxio.master.journal.JournalTailer.processNextJournalLogFiles(JournalTailer.java:123)

at alluxio.master.AbstractMaster.start(AbstractMaster.java:148)

at alluxio.master.file.FileSystemMaster.start(FileSystemMaster.java:419)

at alluxio.master.DefaultAlluxioMaster.startMasters(DefaultAlluxioMaster.java:263)

at alluxio.master.FaultTolerantAlluxioMaster.start(FaultTolerantAlluxioMaster.java:91)

at alluxio.ServerUtils.run(ServerUtils.java:38)

at alluxio.master.AlluxioMaster.main(AlluxioMaster.java:43)

Caused by: alluxio.exception.FileDoesNotExistException: inodeId 52 does not exist

at alluxio.master.file.meta.InodeTree.lockFullInodePath(InodeTree.java:351)

at alluxio.master.file.FileSystemMaster.setAttributeFromEntry(FileSystemMaster.java:3006)

at alluxio.master.file.FileSystemMaster.processJournalEntry(FileSystemMaster.java:345)

... 7 more

2018-07-25 16:39:21,522 INFO  logger.type (DefaultAlluxioMaster.java:stop) - Stopping Alluxio master @ aznballuxiosl01.envazure.com/10.24.101.103:19998

2018-07-25 16:39:21,522 ERROR logger.type (LeaderSelectorClient.java:takeLeadership) - aznballuxiosl01.envazure.com:19998 was interrupted.

java.lang.InterruptedException: sleep interrupted

at java.lang.Thread.sleep(Native Method)

at alluxio.LeaderSelectorClient.takeLeadership(LeaderSelectorClient.java:177)

at org.apache.curator.framework.recipes.leader.LeaderSelector$3.run(LeaderSelector.java:328)

at com.google.common.util.concurrent.MoreExecutors$SameThreadExecutorService.execute(MoreExecutors.java:293)

at org.apache.curator.framework.recipes.leader.LeaderSelector.doWork(LeaderSelector.java:319)

at org.apache.curator.framework.recipes.leader.LeaderSelector.doWorkLoop(LeaderSelector.java:376)

at org.apache.curator.framework.recipes.leader.LeaderSelector.access$100(LeaderSelector.java:48)

at org.apache.curator.framework.recipes.leader.LeaderSelector$2.call(LeaderSelector.java:197)

at java.util.concurrent.FutureTask.run(FutureTask.java:262)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

at java.lang.Thread.run(Thread.java:745)

通过hdfs fsck /  , 也没有检查到文件损坏.

$ hdfs fsck /user/alluxio/

Connecting to namenode via https://azcbetannl02.envazure.com:50470/fsck?ugi=hdfs&path=%2Fuser%2Falluxio

FSCK started by hdfs (auth:KERBEROS_SSL) from /10.24.101.76 for path /user/alluxio at Wed Jul 25 16:38:07 CST 2018

.........Status: HEALTHY

Total size:    61438434 B (Total open files size: 275 B)

Total dirs:    7

Total files:   9

Total symlinks:                0 (Files currently being written: 1)

Total blocks (validated):      8 (avg. block size 7679804 B) (Total open file blocks (not validated): 1)

Minimally replicated blocks:   8 (100.0 %)

Over-replicated blocks:        0 (0.0 %)

Under-replicated blocks:       0 (0.0 %)

Mis-replicated blocks:         0 (0.0 %)

Default replication factor:    3

Average block replication:     3.0

Corrupt blocks:                0

Missing replicas:              0 (0.0 %)

Number of data-nodes:          6

Number of racks:               1

FSCK ended at Wed Jul 25 16:38:07 CST 2018 in 4 milliseconds

The filesystem under path '/user/alluxio' is HEALTHY

经过google查询,也没有什么好的解决方案.

最后使用杀手锏. format master. 效果立杆见影. master起来了, 数据也全没啦!!! 注意:数据全没了!!

由于我们的alluxio只是一个中间临时缓存,format的影响不大.

我们看看, alluxio正常启动,日志是什么样子的:

2018-07-25 16:40:52,545 INFO  logger.type (AbstractMaster.java:start) - FileSystemMaster: Starting leader master.

2018-07-25 16:40:52,550 INFO  logger.type (JournalWriter.java:completeAllLogs) - Marking all logs as complete.

2018-07-25 16:40:52,557 INFO  logger.type (AbstractMaster.java:start) - FileSystemMaster: journal checkpoint does not exist, nothing to process.

2018-07-25 16:40:52,562 INFO  logger.type (JournalWriter.java:getCheckpointOutputStream) - Creating tmp checkpoint file: hdfs://azbeta/user/alluxio/journal/FileSystemMaster/checkpoint.data.tmp

2018-07-25 16:40:52,564 INFO  logger.type (JournalWriter.java:getCheckpointOutputStream) - Latest journal sequence number: 0 Next journal sequence number: 1

2018-07-25 16:40:52,699 INFO  logger.type (JournalWriter.java:close) - Successfully created tmp checkpoint file: hdfs://azbeta/user/alluxio/journal/FileSystemMaster/checkpoint.data.tmp

2018-07-25 16:40:52,720 INFO  logger.type (CheckpointManager.java:updateCheckpoint) - Renamed the checkpoint file from hdfs://azbeta/user/alluxio/journal/FileSystemMaster/checkpoint.data.tmp to hdfs://azbeta/user/alluxio/journal/FileSystemMaster/checkpoint.data

2018-07-25 16:40:52,720 INFO  logger.type (JournalWriter.java:deleteCompletedLogs) - Deleting all completed log files...

2018-07-25 16:40:52,722 INFO  logger.type (JournalWriter.java:deleteCompletedLogs) - Deleting completed log: hdfs://azbeta/user/alluxio/journal/FileSystemMaster/completed/log.00000000000000000000

2018-07-25 16:40:52,723 INFO  logger.type (JournalWriter.java:deleteCompletedLogs) - Finished deleting all completed log files.

2018-07-25 16:40:52,735 INFO  logger.type (MetricsSystem.java:startSinksFromConfig) - Starting sinks with config: {}.

2018-07-25 16:40:52,750 INFO  util.log (Log.java:initialized) - Logging initialized @5111ms

2018-07-25 16:40:52,917 INFO  server.Server (Server.java:doStart) - jetty-9.2.z-SNAPSHOT

2018-07-25 16:40:52,943 INFO  handler.ContextHandler (ContextHandler.java:doStart) - Started [email protected]{/metrics/json,null,AVAILABLE}

2018-07-25 16:41:04,080 INFO  handler.ContextHandler (ContextHandler.java:doStart) - Started [email protected]{/,file:/data1/alluxio-1.4.0/core/server/src/main/webapp/,AVAILABLE}{/data1/alluxio-1.4.0/core/server/src/main/webapp}

2018-07-25 16:41:04,087 INFO  server.ServerConnector (AbstractConnector.java:doStart) - Started [email protected]{HTTP/1.1}{0.0.0.0:19999}

2018-07-25 16:41:04,087 INFO  server.Server (Server.java:doStart) - Started @16448ms

2018-07-25 16:41:04,087 INFO  logger.type (WebServer.java:start) - Alluxio Master Web service started @ /0.0.0.0:19999

2018-07-25 16:41:04,088 INFO  logger.type (DefaultAlluxioMaster.java:startServing) - Alluxio master version 1.4.0 started @ aznballuxiosl01.envazure.com/10.24.101.103:19998 (gained leadership)

总结:

Alluxio HA的使用,原本是为了数据安全性和稳定性.

但是已经发生过多次,在hdfs上的journal文件夹的共享文件损坏的情况. 稳定性反倒变差了.这个需要重新考量,是否使用hdfs,提供HA的方式了.

另外,每次发生问题的时候hdfs fsck都是正常的.也就是说,不是hdfs 的"锅",而是alluxio写入hdfs的时候,没有成功,导致的文件损坏.

原文地址:http://blog.51cto.com/hsbxxl/2150132

时间: 2024-10-12 23:26:14

Alluxio HA 写入文件失败的相关文章

ADODB.Stream 错误 '800a0bbc' 写入文件失败

最近在调试一个过去的项目,asp写的一个无组上传类,以前都测试通过的,本次发布却提示: ADODB.Stream 错误 '800a0bbc' 写入文件失败. /UpLoadClass_Dreacom_v3/UpLoadClass.asp,行 703 发生此错误的系统是:Windows Server 2008 R2 有的还可能提示:ADODB.Stream 错误 30004 开始以为是权限的问题,于是设置文件夹的权限,甚至给了Everyone完全控制的权限,结果还是不行: 相关错误代码行: str

记一次Alluxio HA master启动失败

1. 今天遇到一个情况,就是alluxio不能正常访问,经过日志查看,发现下面错误. 2018-05-14 03:35:58,680 ERROR logger.type (HdfsUnderFileSystem.java:open) - 4 try to open hdfs://sandy-bridge/user/alluxio/journal/FileSystemMaster/completed/log.00000000000000000001 : Cannot obtain block le

iOS 开发之字典写入文件

在最近的开发中阿,遇到一个问题,是我开始没有注意到的问题,某个羡慕后期维护的过程中发现一个bug,这个bug就是关于字典写入文件的.缘由是这样的,我用字典写入文件的方法 BOOL result = [resultDic writeToFile:CityListDataPath atomically:YES]; if (result) { NSLog(@"HYH-写入成功"); }else { NSLog(@"HYH-写入失败"); } 至于这个问题我通过阅读官方文档

file_put_contents() ——将一个字符串写入文件

语法: int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] ) 参数 描述 filename 必需. 要被写入数据的文件名. 规定要写入数据的文件.如果文件不存在,则创建一个新文件. data 必需.规定要写入文件的数据.可以是字符串.数组或数据流. string,array 或者是 stream 资源 参数 data 可以是数组(但不能为多维数组),这就

ETL应用:使用Pro*C写入文件信息入库的方法

ETL处理过程中,经常需要进行文件校验,如文件级校验.记录级校验,需要保存文件的基本信息,文件名.文件大小.数据日期等,使用Pro*C的一种方法如下: #include <stdio.h> #include <stdlib.h> #include <time.h> #include <unistd.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h

php学习笔记--高级教程--读取文件、创建文件、写入文件

打开文件:fopen:fopen(filename,mode);//fopen("test.txt","r"): 打开模式:r  仅仅读方式打开,将文件指针指向文件头 r+  读写方式打开,将文件指针指向文件头 w  写入方式,指向文件头,假设不存在则尝试创建 w+ 读写方式,指向文件头,假设不存在则尝试创建 a  写入方式打开,指向文件末尾,假设不存在则尝试创建 a+ 读写方式打开,指向文件末尾,假设不存在则尝试创建 读取文件:fread:fread(); rea

C++文件操作:打开文件和写入文件 zz

http://www.weixueyuan.net/view/5825.html 如果程序的运行结果仅仅显示在屏幕上,当要再次查看结果时,必须将程序重新运行一遍:而且,这个结果也不能被保留. 如果希望程序的运行结果能够永久保留下来,供随时查阅或取用,则需要将其保存在文件中. 文件分类 外部文件和内部文件 外部文件:指磁盘文件,也是通常所谓的文件. 内部文件:指在程序中运行的文件,更正式的称谓是“文件流对象”. 程序中操作的是内部文件,最后保存的是外部文件. 文本文件和二进制文件 文本文件:由字符

Linux下中断程序导致写文件失败的分析

案例: 一个普通linux C程序,执行期间会进行多次printf操作,利用bash脚本重定向功能,将stdout重定向到一个另一个文件中去.在运行途中用ctrl+C终止程序,发现定向文件始终为空,即写失败. 分析: 原本以为是bash重定向机制导致的问题,于是将重定向取消,改为使用fprintf,而非printf.即在C程序内部进行写文件.发现问题依旧.(排除fopen打开失败的因素) 仔细观察,发现问题集中在两个层面,一个是ctrl+c到底做了什么,二是写文件操作为什么失败. 首先,ctrl

字符串写入文件

#import <Foundation/Foundation.h> //写入文件 int main(int argc, const char * argv[]) { @autoreleasepool { NSString * str = @"你是一仅仅小狗 "; //创建路径 NSString * path [email protected]"/Users/ms/Desktop/hello/my.txt"; NSError * error; //第一个參