【 使用环境 】测试环境
【 OB or 其他组件 】obdumper
【 使用版本 】4.3.X
【问题描述】同样的导出命令,给AWS S3导出时正常,但是给华为OBS导出时一直报Could not find any valid local directory for XXXXX,试了4.3.2/4.3.3/4.3.4版本均为同样的错误
【复现路径】
【附件及日志】错误为 java.lang.IllegalStateException: org.apache.hadoop.util.DiskChecker$DiskErrorException: Could not find any valid local directory for obs-block-0001- with requested size 67108864 as the max capacity in any directory is 0
学习了
导出命令能发一下看看么
查看一下本地能够访问存储不,obloader,obdumper 对存储位置没有要求,可以访问,能够读写就可以操作
导出命令如下,这是给OBS导数,一直报错
./obdumper -h xxx.xxx.xxx.xxx -P 2883 -u xxx@xxx#xxx -p xxx -D xxx --cut --table T00_MENU -f 'obs://bucket-xxx/obstest?endpoint=https://xxxxxx.com&access-key=XXXX&secret-key=xxxx' --column-splitter '!^' --empty-string '' --null-string '' --file-encoding utf-8
我是在官网下的导数工具x86版4.3.3,传到/home/ods/soft/下解压,执行用户也是ods,加了–temp-path指定目录后执行命令,可以看到会自动创建对应的目录,但是一直报上面的错,不指定该参数,会在导数工具解压目录和bin同级目录下自动创建tmp目录,上述两种方式在执行后都会在临时目录下存在logs目录,里面为执行后的各个级别的错误信息。
上述到处命令,将-f换成aws s3后又能正常导出到对象存储中
当前登陆用户为ods,导出软件使用ods用户上传至/home/ods/soft下,该目录对ods用户组都是可读可写,导出命令执行后,–temp-path指定的目录也能正常创建,执行后的日志也已在对应目录下生成,目录权限是没问题的
试了下通过OBS导入数据是可行的,就导出有问题
可以先检查下 该节点访问obs的权限是否正常
试了下obloader导入命令,可以正常导入,但导出不行
感觉是可以读不能写,权限给的够么
从最上层目录已经递归给到777了还是不行
最后发现是为当前虚拟机申请的数据盘为正确挂载
最终更正下,是根目录/tmp权限问题,给成775或777就可以了
本地目录问题导致的吧?
新申请的虚拟机,/tmp目录默认其他用户是只读,目前来看obdumper在导出时即使指定了–tmp-path路径,但还会使用/tmp目录,所以必须将这个目录权限设置到775以上
会在/tmp目录生成导出导入的日志所以需要权限
