我正在尝试在 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.whitelist和oozie.service.HadoopAccessorService.nameNode.whitelist。
任何帮助,将不胜感激。
谢谢。
戴夫
我在我的"群集"上使用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?
考虑这个片段,
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)
因为,没有任何变量在堆上分配,所以在进程结束时将释放所有分配的空间.
问题:
根据我的代码,我假设每个希腊字符以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) 我试图找到权力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) 我们使用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).它可以采用类型B或C或的对象A
注意:假设设置了数据成员的值
我的意思是路径被定义(它可以是A或B或C).它并不完全run time dependent[就像要求用户输入年龄而用户输入一些单词或其他数据类型].
但为什么这被称为run time binding?如果要分配的对象是兼容的还是没有,编译器会事先进行检查.
用于表示引用变量与特定类型的对象没有严格关联的术语是在运行时决定的.还有更多吗?
我们有带有 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)
但我仍然遇到同样的错误。
任何解决方法?
谢谢
编码可以包含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构造函数调用.
当我想要反转字符串时,我喜欢使用这段代码.[当我不使用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)
更新:
此链接与此问题相关.
我做了大量的搜索,发现了大量的示例和教程,但仍然无法弄清楚如何在写入[]运算符时获取值...
我觉得我疯了.我必须错过一些非常简单的事情
据我可以告诉有一个单一的功能get和set它看起来是这样的:
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)