小编Rom*_*nko的帖子

杀死分叉的孩子会杀死父母?

我进入这种奇怪的行为,我有我的主程序和分叉的孩子.它们是这样的管道(数字是文件描述符):

 ___parent___
|            |                     ____child_____
| 0 stdin    |                    |              |
| 1 pipe1[1]----------.           |  1 stdout    |
| 2 pipe2[1]----------.\          |  2 stderr    |
|____________|         \`----------> 3 pipe1[0]  | 
                        `----------> 5 pipe2[0]  |
                                  |______________|
Run Code Online (Sandbox Code Playgroud)

所以父从stdin获取输入,但是将stdoutstderr重定向到两个管道.孩子关闭了它的标准输入并使用了管道的读取端.

然后我有一个杀死孩子的功能:

void killChild(){
  printf("Killing %d\n", (int)childID);
  fflush(stdout);
  kill(childID, SIGKILL);
  waitpid(childID, NULL, 0);   // getting rid of the zombie
}
Run Code Online (Sandbox Code Playgroud)

孩子被成功杀死但问题是父母本身也被杀死了.我检查了孩子的PID,这是正确的.

那么为什么父母会死?

c linux ipc process

12
推荐指数
1
解决办法
797
查看次数

通过Java API从远程主机进行HDFS访问,用户身份验证

我需要通过Java API从远程桌面使用HDFS集群.一切正常,直到写访问.如果我正在尝试创建任何文件,我会收到访问权限异常.路径看起来很好,但异常表示我的远程桌面用户名,这当然不是我需要访问所需的HDFS目录.

问题是: - 有没有办法在Java API中使用"简单"身份验证来表示不同的用户名? - 您能否在Java API示例中更好地解释hadoop/HDFS中的身份验证/授权方案?

是的,我已经知道'whoami'在这种情况下可能会使用shell别名超载但我宁愿避免像这样的解决方案.此处的具体细节是我不喜欢通过SSH和脚本使用管道等一些技巧.我想使用Java API执行所有操作.先感谢您.

java security authentication hadoop hdfs

10
推荐指数
1
解决办法
3万
查看次数

来自Java的HDFS - 指定用户

我很高兴连接到HDFS并列出我的主目录:

Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://hadoop:8020");
conf.set("fs.hdfs.impl", "org.apache.hadoop.hdfs.DistributedFileSystem");
FileSystem fs = FileSystem.get(conf);
RemoteIterator<LocatedFileStatus> ri = fs.listFiles(fs.getHomeDirectory(), false);
while (ri.hasNext()) {
    LocatedFileStatus lfs = ri.next();
    log.debug(lfs.getPath().toString());
}
fs.close();
Run Code Online (Sandbox Code Playgroud)

我现在想要做的是以特定用户身份连接(而不是whois用户).有谁知道你如何指定你连接的用户?

java security authentication hadoop hdfs

10
推荐指数
1
解决办法
2万
查看次数

Apache Hadoop setXIncludeAware UnsupportedOperationException

我正在尝试运行Apache Hadoop 1.21,但是我遇到了这个异常:

Failed to set setXIncludeAware(true) for parser org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
org.apache.xerces.jaxp.DocumentBuilderFactoryImpl@2662e5cf:java.lang.UnsupportedOperationException
Run Code Online (Sandbox Code Playgroud)

完整堆栈跟踪:

13/10/17 17:22:52 ERROR conf.Configuration: Failed to set setXIncludeAware(true) for parser org.apache.xerces.jaxp.DocumentBuilderFactoryImpl@2662e5cf:java.lang.UnsupportedOperationException:  setXIncludeAware is not supported on this JAXP implementation or earlier: class org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
java.lang.UnsupportedOperationException:  setXIncludeAware is not supported on this JAXP implementation or earlier: class org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
    at javax.xml.parsers.DocumentBuilderFactory.setXIncludeAware(DocumentBuilderFactory.java:589)
    at org.apache.hadoop.conf.Configuration.loadResource(Configuration.java:1131)
    at org.apache.hadoop.conf.Configuration.loadResources(Configuration.java:1107)
    at org.apache.hadoop.conf.Configuration.getProps(Configuration.java:1053)
    at org.apache.hadoop.conf.Configuration.get(Configuration.java:460)
    at org.apache.hadoop.fs.FileSystem.getDefaultUri(FileSystem.java:132)
    at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:124)
    at main.JobExecutor.executeModelCreation(JobExecutor.java:223)
    at main.JobExecutor.main(JobExecutor.java:256)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:160)
Run Code Online (Sandbox Code Playgroud)

我已经找了近3天的解决方案,我找到了几个网站(比如这个:Hadoop"无法为解析器设置setXIncludeAware(true)"错误以及如何解决它),建议将xerces和xalan添加到maven依赖.还有其他网站,建议几乎相反 …

java hadoop exception xerces maven

10
推荐指数
2
解决办法
8203
查看次数

如何获得CRC64分布式计算(使用其线性属性)?

我需要对存储在分布式FS上的相当大的文件进行哈希处理.我能够以比整个文件更好的性能处理文件的部分,所以我希望能够计算部分的哈希值然后求和.

我正在考虑CRC64作为散列算法,但我不知道如何使用其理论上的"线性函数"属性,因此我可以对文件的各个部分求和.有什么建议?我错过了什么?

附加说明我为什么看CRC64:

  • 我可以控制文件块,但由于应用程序性质,它们需要具有不同的大小(最多1个字节,不可能有任何固定块).
  • 我知道CRC32implementation(zlib),其中包括对部分CRC进行求和的方法,但我想要更广泛的东西.8个字节对我来说很好看.
  • 我知道CRC非常快.我希望从中获利,因为文件可能非常庞大(高达几Gb).

c java hash crc distributed-computing

10
推荐指数
2
解决办法
5864
查看次数

新的Sonar IntelliJ插件增量分析和检测不起作用

我想请求帮助.我安装了插件并成功添加了SonarQube服务器.我升级到4.1.2版.我使用IntelliJ IDEA 13.0.2.我也成功地联系了项目并出现了检查警告.但是当我解决问题时,状态不会更新.

  1. 如何同步?

我还通过名称'SonarQube issues'进行检查.然而,在运行检查后,警告也在那里,代码被修复了.在我看来同步失败了.有什么想法,请问什么todo?

java code-analysis intellij-idea sonarqube idea-plugin

10
推荐指数
1
解决办法
5395
查看次数

在@DataProvider方法中引发Exception后,TestNG会跳过测试

我有点困惑.

如何让TestNG报告测试错误?

// ...
@DataProvider(name = "foo")
public Object[][] provideData () {
    throw new SomeRuntimeException("Some error occurred. The test configuration "
            + "is somehow incorrect.");
}
Run Code Online (Sandbox Code Playgroud)

这只会导致测试跳过.该异常甚至没有记录.将它移动到构造函数只会记录异常,但这还不够......

我想要一个很大的错误消息.

目前,使用专用(自我)测试方法完成了至少显示一些测试失败的工作......

无论如何,很高兴知道testNG对错误的定义是什么样的.

谢谢你的任何提示!

java testing testng automated-tests unit-testing

10
推荐指数
1
解决办法
4660
查看次数

zookeeper客户端不提供CLI"禁用jline支持"消息

我刚刚起床CDH 5.4并安装了zookeeper.之前我曾多次成功使用过zkCli.这次命令行启动在到达提示符之前停止

Welcome to ZooKeeper!
JLine support is disabled
2015-05-04 18:18:33,936 [myid:] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@975] - Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
2015-05-04 18:18:33,952 [myid:] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@852] - Socket connection established to localhost/127.0.0.1:2181, initiating session
2015-05-04 18:18:33,985 [myid:] - INFO  [main-SendThread(localhost:2181):ClientCnxn$SendThread@1235] - Session establishment complete on server localhost/127.0.0.1:2181, sessionid = 0x34d12349d0a15cf, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
Run Code Online (Sandbox Code Playgroud)

我知道通常的打印输出是启用了JLine支持

是什么让它陷入困境?我没有看到任何方法来改变这个Cloudera管理器配置页面.

java hadoop jline cloudera apache-zookeeper

10
推荐指数
1
解决办法
4784
查看次数

相当于Java中的memcmp()?

如果我有两个byte[]数组,是否有一个内置函数来比较它们ala C memcmp()

c java posix libc memcmp

9
推荐指数
2
解决办法
6126
查看次数

失败的malloc()的单元测试

单元测试涉及失败的代码路径的最佳方法是什么malloc()?在大多数情况下,它可能并不重要,因为你正在做类似的事情

thingy *my_thingy = malloc(sizeof(thingy));
if (my_thingy == NULL) {
  fprintf(stderr, "We're so screwed!\n");
  exit(EXIT_FAILURE);
} 
Run Code Online (Sandbox Code Playgroud)

但在某些情况下,除了死亡之外你还有其他选择,因为你已经为缓存或其他任何东西分配了一些额外的东西,你可以收回那些记忆.

但是,在那些您可以尝试从失败malloc()中恢复的情况下,您在代码路径中执行的操作非常棘手并且容易出错,这使得测试变得尤为重要.你是怎么做到这一点的?

c unit-testing memory-management libc

8
推荐指数
1
解决办法
8002
查看次数