小编Suv*_*yil的帖子

获取 OOZIE 错误 E0900:不允许 Jobtracker [localhost:8021],不在 Oozies 白名单中]

我正在尝试在 CDH 虚拟机上运行 Oozie 示例。我运行了 Cloudera Manager 并执行以下命令:

oozie job -oozie http://localhost:11000/oozie -config examples/apps/map-reduce/job.properties -run
Run Code Online (Sandbox Code Playgroud)

当我检查状态时,我收到了 HadoopAccessorException。

我检查了 oozie 日志,看到以下堆栈跟踪:

2013-07-22 14:25:56,179 WARN org.apache.oozie.command.wf.ActionStartXCommand:
USER[cloudera] GROUP[-] TOKEN[] APP[map-reduce-wf] JOB[0000001-130722142323751-oozie
oozi-W] ACTION[0000001-130722142323751-oozie-oozi-W@mr-node] Error starting action
[mr-node]. ErrorType [ERROR], ErrorCode [HadoopAccessorException], Message
[HadoopAccessorException: E0900: Jobtracker  not allowed, not in
Oozies whitelist] org.apache.oozie.action.ActionExecutorException:
HadoopAccessorException: E0900: Jobtracker not allowed, not in Oozies
Whitelist
Run Code Online (Sandbox Code Playgroud)

oozie-site.xml 和 oozie-default.xml设置了oozie.service.HadoopAccessorService.jobTracker.whitelistoozie.service.HadoopAccessorService.nameNode.whitelist

任何帮助,将不胜感激。

谢谢。

戴夫

hadoop oozie

5
推荐指数
1
解决办法
4583
查看次数

HDFS在复制块下

我在我的"群集"上使用Cloudera Manager免费版,我的单机上有所有服务.

我的机器充当datanode,namenode以及辅助namenode.

HDFS中与复制相关的设置,

dfs.replication                                   - 1
dfs.replication.min, dfs.namenode.replication.min - 1
dfs.replication.max                               - 1   
Run Code Online (Sandbox Code Playgroud)

我仍然得到重复不足的块,因此Bad Health,

Namenode日志说,

Requested replication 3 exceeds maximum 1
java.io.IOException: file /tmp/.cloudera_health_monitoring_canary_files/.canary_file_2013_10_21-15_33_53 on client 111.222.333.444
Requested replication 3 exceeds maximum 1
    at org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.verifyReplication(BlockManager.java:858)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFileInternal(FSNamesystem.java:1848)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFileInt(FSNamesystem.java:1771)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFile(FSNamesystem.java:1747)
    at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.create(NameNodeRpcServer.java:439)
    at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.create(ClientNamenodeProtocolServerSideTranslatorPB.java:207)
    at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java:44942)
    at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:453)
    at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1002)
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1751)
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1747)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:396)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408)
    at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1745)
Run Code Online (Sandbox Code Playgroud)

我已更改了值,已保存,已部署的客户端配置,已重新启动.它仍然是一样的.

我需要设置什么属性才能使CM读取复制因子1而不是3

hadoop hdfs cloudera cloudera-manager

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

这是不好的做法吗?将指向空白字符串的指针重定向到另一个字符串?

考虑这个片段,

char *p1="";
printf("p1=%p\np1=%s\n",p1,p1);

char s1[6]="abcde";
printf("s1=%p\ns1=%s\n",s1,s1);

p1=s1;

printf("p1=%p\np1=%s\n",p1,p1);
Run Code Online (Sandbox Code Playgroud)

因为,没有任何变量在堆上分配,所以在进程结束时将释放所有分配的空间.

问题:

  • 当指向它的指针被重定向到另一个字符串时,空字符串会发生什么?(根据我的基本Java知识,如果使用Java,空白字符串将有资格收集GC.这里会发生什么?)
  • 如果代码更长,空白字符串是否会不停地使用内存直到结束?
  • Valgrind不报告内存泄漏(我猜这只是指堆内存?).是否存在这种编码实践导致瓶颈的情况?

c memory memory-management

4
推荐指数
1
解决办法
131
查看次数

sizeof字符和strlen字符串不匹配

根据我的代码,我假设每个希腊字符以2字节存储. sizeof将每个字符的大小返回为4(即sizeof int)

如何strlen返回16?[让我觉得每个字符占用2个字节](不应该是4*8 = 32?因为它计算字节数.)

另外,如何printf("%c",bigString[i]);正确打印每个角色?它不应该读取1个字节(一个字符)然后显示因为%c,为什么希腊字符在这种情况下不会分裂.

strcpy(bigString,"????????");//greek
sLen = strlen(bigString);
printf("Size is %d\n ",sizeof('?')); //printing for each character similarly
printf("%s is of length %d\n",bigString,sLen);
int k1 = 0 ,k2 = sLen - 2;

for(i=0;i<sLen;i++)
printf("%c",bigString[i]);
Run Code Online (Sandbox Code Playgroud)

输出:

Size is 4
 ???????? is of length 16
????????
Run Code Online (Sandbox Code Playgroud)

c sizeof char strlen

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

e到C中的幂x

我试图找到权力x的e.请说明我目前的实施可能出现的问题,而不仅仅是建议新的/有效的解决方案(我可以在网上找到很多).似乎有逻辑或运行时错误,调试它没有显示任何内容.提前致谢!

已包含cmath库,程序编译精细..运行时停止

double find_e_power_x(int x){
     int i = 1, j = 1, count = 1, accuracy = 15;
     double xd = static_cast<double>(x); //pow takes double args
     double jd = static_cast<double>(j);
     double epx = 1.0;
     while ( count < accuracy ){
           while ( ++i && ++j) {
                 epx += ( pow(xd,jd) / fact(i) ); //static_cast
                 count++;
           }
     }
     return epx;
} 
Run Code Online (Sandbox Code Playgroud)

回应评论(指出我无限的内循环),

编辑:

while ( count < accuracy ){
                 epx += ( pow(xd,jd) / fact(i) ); //static_cast
                 count++;
                 i++;
                 j++;
     } …
Run Code Online (Sandbox Code Playgroud)

c++ exponent

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

为什么称它为动态绑定?

我们使用virtual来实现Cpp中的动态绑定,即在运行时决定必须根据创建的实际对象而不是引用或指针变量调用哪个函数.

class A
{
 int a;
public:
 virtual void show();
};

void A::show() { cout<<a<<endl; }

class B:public A
{
 int b;
public:
 void show() { cout<<b<<endl; }
};

class C:public A
{
 int c;
public:
 void show() { cout<<c<<endl; }
};
Run Code Online (Sandbox Code Playgroud)

假设,someFunction(A& aref).它可以采用类型BC或的对象A

注意:假设设置了数据成员的值

我的意思是路径被定义(它可以是A或B或C).它并不完全run time dependent[就像要求用户输入年龄而用户输入一些单词或其他数据类型].

为什么这被称为run time binding?如果要分配的对象是兼容的还是没有,编译器会事先进行检查.

用于表示引用变量与特定类型的对象没有严格关联的术语是在运行时决定的.还有更多吗?

c++ virtual inheritance dynamic language-lawyer

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

nameservice1 和 nameservice2 之间的 distcp

我们有带有 Cloudera Manager 5 的 CDH 5.2。

我们想将数据从 nameservice2 复制到 nameservice1

两个集群都在相同的 CDH 版本上

当我尝试 hadoop distcp hdfs://nameservice2/foo/bar hdfs://nameservice1/bar/foo

我有错误

java.lang.IllegalArgumentException: java.net.UnknownHostException: nameservice2

所以我将以下配置从 Nameservice2 添加到 Nameservice1

Cloudera 管理器(网关默认组)中 hdfs-site.xml 的 HDFS 客户端高级配置片段(安全阀)

<property>
<name>dfs.nameservices</name>
<value>nameservices2</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.nameservices2</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.ha.namenodes.nameservices2</name>
<value>namenode36,namenode405</value>
</property>
<property>
<name>dfs.namenode.rpc-address.nameservices2.namenode36</name>
<value>hnn001.prod.cc:8020</value>
</property>
<property>
<name>dfs.namenode.servicerpc-address.nameservices2.namenode36</name>
<value>hnn001.prod.com:54321</value>
</property>
<property>
<name>dfs.namenode.http-address.nameservices2.namenode36</name>
<value>hnn001.prod.com:50070</value>
</property>
<property>
<name>dfs.namenode.https-address.nameservices2.namenode36</name>
<value>hnn001.prod.com:50470</value>
</property>
<property>
<name>dfs.namenode.rpc-address.nameservices2.namenode405</name>
<value>hnn002.prod.com:8020</value>
</property>
<property>
<name>dfs.namenode.servicerpc-address.nameservices2.namenode405</name>
<value>hnn002.prod.com:54321</value>
</property>
<property>
<name>dfs.namenode.http-address.nameservices2.namenode405</name>
<value>hnn002.prod.com:50070</value>
</property>
<property>
<name>dfs.namenode.https-address.nameservices2.namenode405</name>
<value>hnn002.prod.com:50470</value>
</property>
Run Code Online (Sandbox Code Playgroud)

但我仍然遇到同样的错误。

任何解决方法?

谢谢

hadoop bigdata cloudera cloudera-manager cloudera-cdh

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

项目 - 库存 - 关系,哪一个应该知道另一个?

编码可以包含6个项目的库存可能看起来像这样:

class Inventory {
    private:
        Item[6] m_items;
};
Run Code Online (Sandbox Code Playgroud)

另一方面,项目看起来像这样:

class Item {
    private:
        Inventory* m_parent;
};
Run Code Online (Sandbox Code Playgroud)

但是,显然这两个班级都不能相互认识.一个解决方案是一个公共基类,但这两个类没有任何共同之处,它会导致更多问题,例如:我无法m_parent->addItem(this);Item构造函数调用.

c++ design-patterns class

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

字符编码独立字符交换

当我想要反转字符串时,我喜欢使用这段代码.[当我不使用std::string或其他内置功能C].作为一个初学者,当我最初想到这一点时,我心里有了ASCII表.我认为这也可以很好地运作Unicode.我假设因为值(ASCII等)的差异是固定的,所以它可以工作.

是否有任何字符编码可能无法使用此代码?

char a[11],t;
int len,i;
strcpy(a,"Particl");    
printf("%s\n",a);
len = strlen(a);
for(i=0;i<(len/2);i++)
{
    a[i] += a[len-1-i];
    a[len-1-i] = a[i] - a[len-1-i];
    a[i] -= a[len-1-i];
}
printf("%s\n",a);
Run Code Online (Sandbox Code Playgroud)

更新:

链接与此问题相关.

c c++ character-encoding

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

c ++使用[]运算符重载写入/设置

我做了大量的搜索,发现了大量的示例和教程,但仍然无法弄清楚如何在写入[]运算符时获取值...

我觉得我疯了.我必须错过一些非常简单的事情

据我可以告诉有一个单一的功能getset它看起来是这样的:

V& operator[](string K);
Run Code Online (Sandbox Code Playgroud)

或这个:

double &operator[](int n);
Run Code Online (Sandbox Code Playgroud)

现在好了,我们可以得到的是:

a[HERE] 
Run Code Online (Sandbox Code Playgroud)

因为HERE变成double &operator[](int HERE); 我们可以很容易地使用它

但我们如何得到的是:

a[4] = HERE
Run Code Online (Sandbox Code Playgroud)

C#有两个非常清晰的get和set方法,value关键字表示被分配的对象.

public string this[int key]
{
    get
    {
        if(key == 1)
           return "1!";
        if(key == 2)
           return "2!";
        else
           return "3!";
    }
    set
    {
        if( value == "setting")   //value is a[3] = THIS
           this.isSet = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ operator-overloading

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