- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在编写一些代码来访问 HBase,我正在编写单元测试以创建一个 MiniDFSCluster 作为测试设置的一部分。
(defn test-config [& options]
(let [testing-utility (HBaseTestingUtility.)]
(.startMiniCluster testing-utility 1)
(let [config (.getConfiguration testing-utility)]
(if (not= options nil)
(doseq [[key value] options]
(.set config key value)))
config)))
;; For those who don't read Clojure, lines 2 and 3 cause
;; the failure and are equivalent to the following Java
;;
;; HBaseTestingUtility testingUtility = new HBaseTestingUtility();
;; testingUtility.startMiniCluster(1); // blows up on Linux but not Mac OSX
这在带有 Java HotSpot 的 Mac OSX 上运行良好:
$ java -version
java version "1.6.0_51"
Java(TM) SE Runtime Environment (build 1.6.0_51-b11-457-11M4509)
Java HotSpot(TM) 64-Bit Server VM (build 20.51-b01-457, mixed mode)
$ lein test
lein test hbase.config-test
lein test hbase.table-test
2013-07-12 17:44:13.488 java[27384:1203] Unable to load realm info from SCDynamicStore
Starting DataNode 0 with dfs.data.dir: /Users/dwilliams/Desktop/Repos/mobiusinversion/hbase/target/test-data/fe0199fd-0168-48d9-98ce-b4a5e62d3257/dfscluster_bbad1095-58d1-4571-ba12-4d4f1c24203f/dfs/data/data1,/Users/dwilliams/Desktop/Repos/mobiusinversion/hbase/target/test-data/fe0199fd-0168-48d9-98ce-b4a5e62d3257/dfscluster_bbad1095-58d1-4571-ba12-4d4f1c24203f/dfs/data/data2
Cluster is active
Ran 11 tests containing 14 assertions.
0 failures, 0 errors.
但是在linux环境下运行时,出现如下错误:
ERROR in (create-table) (MiniDFSCluster.java:426)
Uncaught exception, not in assertion.
expected: nil
actual: java.lang.NullPointerException: null
at org.apache.hadoop.hdfs.MiniDFSCluster.startDataNodes (MiniDFSCluster.java:426)
org.apache.hadoop.hdfs.MiniDFSCluster.<init> (MiniDFSCluster.java:284)
org.apache.hadoop.hbase.HBaseTestingUtility.startMiniDFSCluster (HBaseTestingUtility.java:444)
org.apache.hadoop.hbase.HBaseTestingUtility.startMiniCluster (HBaseTestingUtility.java:612)
org.apache.hadoop.hbase.HBaseTestingUtility.startMiniCluster (HBaseTestingUtility.java:568)
org.apache.hadoop.hbase.HBaseTestingUtility.startMiniCluster (HBaseTestingUtility.java:555)
我提交了一张 travis-ci 票,因为它首先在那里出现,我认为这可能是由于他们的环境。
https://github.com/travis-ci/travis-ci/issues/1240
但是,在与 travis 支持人员讨论后,我能够在 CentOS 上重现该错误。我在 Linux 上尝试了 Sun JDK 和 OpenJDK,但都产生了相同的错误。这里发生了什么?这是一个微不足道的配置问题吗?也许在 Mac OSX 的 ENV 中设置了 Linux ENV 中未设置的内容?
如果你想运行测试,请克隆 repo
https://github.com/mobiusinversion/hbase
然后运行 lein 测试。非常感谢您的帮助!
更新:
提交此 HBASE Jira 票证
最佳答案
简短回答:在运行测试之前设置“umask 022
”。
长答案:这是从 Hadoop 1.x 版本运行 MiniDFSCluster 的常见环境问题,HBaseTestingUtility 在内部使用它。它已在 Hadoop 0.22+(包括 2.0+,但目前不包括 1.x)中得到有效修复。
根本问题是https://issues.apache.org/jira/browse/HDFS-2556 .
当 MiniDFSCluster 启动时,它会创建用于数据节点进程的临时存储目录(配置为“dfs.data.dir”)。这些将使用您当前设置的 umask 创建。当每个数据节点启动时,它会检查在“dfs.data.dir”中配置的目录是否存在以及目录权限是否与预期值匹配(设置为“dfs.datanode.data.dir.perm”)。如果目录权限与预期值不匹配(默认为“755”),则数据节点进程退出。
默认情况下,在 Hadoop 1.x 中,此值设置为“755”,因此如果您将 umask 设置为“022”,数据目录将获得正确的权限。但是,如果权限与预期值不匹配,数据节点将中止,您将在测试日志文件中看到如下错误:
WARN [main] datanode.DataNode(1577): Invalid directory in dfs.data.dir: Incorrect permission for /.../dfs/data/data2, expected: rwxr-xr-x, while actual: rwxrwxr-x
在以后的Hadoop版本中,如果目录权限不匹配,datanode将尝试将目录权限更改为预期值。仅当此操作失败时,datanode 才会中止。 HDFS-2556 建议将此更改反向移植到 1.x 版本,但尚未修复。
关于java - HBase:MiniDFSCluster.java 在某些环境中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17625938/
我想测试一下我的代码,唤起org.apache.hadoop.hdfs.MiniDFSCluster类示例。但是,在我举一个例子的时候,我收到一条错误消息,通知我进程不会访问某些文件。我遵循了堆栈跟踪
关于 hadoop-minicluster 我需要你的帮助 我正在使用 scala(使用 sbt)并尝试模拟 HDFS 的调用。我播种 hadoop-minicluster 用于部署一个小集群并在其上
我正在测试中启动 MiniDfsCluster(我的依赖项是 2.0.0-cdh4.5.0)。我使用一个简单的例程来启动它: File baseDir = new File("./target/hdf
我正在尝试在 hadoop 中进行测试。有代码为: System.setProperty("test.build.data","/folder"); 配置=新配置(); cluster = new M
我正在编写一些代码来访问 HBase,我正在编写单元测试以创建一个 MiniDFSCluster 作为测试设置的一部分。 (defn test-config [& options] (let
我正在尝试使用 miniDFSCluster 编写单元测试,但它抛出以下错误 java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio
我正在使用 MiniDFSCluster 进行 junit 测试。现在我只是启动和关闭集群,junit 运行绿色。但我得到这个异常(exception): javax.management.Insta
我想实现一个 Maven 项目,它可以帮助我对 Hadoop MapReduce 作业进行单元测试。我最大的问题是定义 Maven 依赖项以便能够使用测试类:MiniDFSCluster 和 Mini
我在 HDFS 配置中使用 defaultFS 设置。我创建配置,然后显式设置它。 import org.apache.hadoop.conf.Configuration import org
做的时候: new MiniDFSCluster.Builder(config).build() 我得到这个异常: java.lang.UnsatisfiedLinkError: org.apache
我正在尝试启动一个小型 Hadoop 集群以进行单元测试。 我的 Maven 配置具有以下依赖项: org.apache.hbase hbase
我是一名优秀的程序员,十分优秀!