storm '*/stormconf.ser' does not exist 问题nimbus进程刚启动后就自动退出

当nimbus进程启动后自动退出,问题源于storm配置文件stormconf.ser缺失。现象包括nimbus无法启动及日志显示'stom '*/stormconf.ser' does not exist'。解决方案涉及清理storm本地目录及Zookeeper数据,并重启服务。

现象: nimbus进程一启动后就自动退出.

使用storm 0.9.3 和 storm 0.9.2时,如果非正常关机,tp没有正常杀死的情况下,再次提交topology时会碰到以下问题

反复出现以下问题

2014-12-01T20:31:09.797+0800 b.s.d.supervisor [INFO] 9ce9ed02-8da3-48fe-b3d6-b95b94910fb7 still hasn’t started
查看 supervisor.log

单独提交任务,把日志里的启动命令截取出来单独运行

‘/usr/Java/latest/bin/java’ ‘-server’ ‘-Xmx768m’ ‘-Djava.library.path=/home/storm/localdir/supervisor/stormdist/test_storm-2-1417437058/resources/Linux-amd64:/home/storm/localdir/supervisor/stormdist/test_storm-2-1417437058/resources:/usr/local/lib:/opt/local/lib:/usr/lib’ ‘-Dlogfile.name=worker-6701.log’ ‘-Dstorm.home=/home/storm/apache-storm-0.9.3’ ‘-Dstorm.conf.file=’ ‘-Dstorm.options=’ ‘-Dstorm.log.dir=/home/storm/apache-storm-0.9.3/logs’ ‘-Dlogback.configurationFile=/home/storm/apache-storm-0.9.3/logback/cluster.xml’ ‘-Dstorm.id=test_storm-2-1417437058’ ‘-Dworker.id=edd6a25e-ba9b-4f0c-bcd7-20e9bfa4df39’ ‘-Dworker.port=6701’ ‘-cp’ ‘/home/storm/apache-storm-0.9.3/lib/minlog-1.2.jar:/home/storm/apache-storm-0.9.3/lib/clj-time-0.4.1.jar:/home/storm/apache-storm-0.9.3/lib/ring-jetty-adapter-0.3.11.jar:/home/storm/apache-storm-0.9.3/lib/logback-classic-1.0.13.jar:/home/storm/apache-storm-0.9.3/lib/log4j-over-slf4j-1.6.6.jar:/home/storm/apache-storm-0.9.3/lib/tools.macro-0.1.0.jar:/home/storm/apache-storm-0.9.3/lib/commons-lang-2.5.jar:/home/storm/apache-storm-0.9.3/lib/tools.cli-0.2.4.jar:/home/storm/apache-storm-0.9.3/lib/math.numeric-tower-0.0.1.jar:/home/storm/apache-storm-0.9.3/lib/tools.logging-0.2.3.jar:/home/storm/apache-storm-0.9.3/lib/disruptor-2.10.1.jar:/home/storm/apache-storm-0.9.3/lib/reflectasm-1.07-shaded.jar:/home/storm/apache-storm-0.9.3/lib/jetty-6.1.26.jar:/home/storm/apache-storm-0.9.3/lib/objenesis-1.2.jar:/home/storm/apache-storm-0.9.3/lib/ring-servlet-0.3.11.jar:/home/storm/apache-storm-0.9.3/lib/kryo-2.21.jar:/home/storm/apache-storm-0.9.3/lib/clout-1.0.1.jar:/home/storm/apache-storm-0.9.3/lib/clojure-1.5.1.jar:/home/storm/apache-storm-0.9.3/lib/ring-core-1.1.5.jar:/home/storm/apache-storm-0.9.3/lib/slf4j-api-1.7.5.jar:/home/storm/apache-storm-0.9.3/lib/snakeyaml-1.11.jar:/home/storm/apache-storm-0.9.3/lib/logback-core-1.0.13.jar:/home/storm/apache-storm-0.9.3/lib/hiccup-0.3.6.jar:/home/storm/apache-storm-0.9.3/lib/asm-4.0.jar:/home/storm/apache-storm-0.9.3/lib/commons-exec-1.1.jar:/home/storm/apache-storm-0.9.3/lib/core.incubator-0.1.0.jar:/home/storm/apache-storm-0.9.3/lib/commons-logging-1.1.3.jar:/home/storm/apache-storm-0.9.3/lib/compojure-1.1.3.jar:/home/storm/apache-storm-0.9.3/lib/jline-2.11.jar:/home/storm/apache-storm-0.9.3/lib/jgrapht-core-0.9.0.jar:/home/storm/apache-storm-0.9.3/lib/joda-time-2.0.jar:/home/storm/apache-storm-0.9.3/lib/commons-codec-1.6.jar:/home/storm/apache-storm-0.9.3/lib/clj-stacktrace-0.2.2.jar:/home/storm/apache-storm-0.9.3/lib/servlet-api-2.5.jar:/home/storm/apache-storm-0.9.3/lib/json-simple-1.1.jar:/home/storm/apache-storm-0.9.3/lib/carbonite-1.4.0.jar:/home/storm/apache-storm-0.9.3/lib/jetty-util-6.1.26.jar:/home/storm/apache-storm-0.9.3/lib/chill-java-0.3.5.jar:/home/storm/apache-storm-0.9.3/lib/commons-io-2.4.jar:/home/storm/apache-storm-0.9.3/lib/ring-devel-0.3.11.jar:/home/storm/apache-storm-0.9.3/lib/commons-fileupload-1.2.1.jar:/home/storm/apache-storm-0.9.3/lib/storm-core-0.9.3.jar:/home/storm/apache-storm-0.9.3/conf:/home/storm/localdir/supervisor/stormdist/test_storm-2-1417437058/stormjar.jar’ ‘backtype.storm.daemon.worker’ ‘test_storm-2-1417437058’ ‘89b2836e-e472-4a45-8084-b59c0c2b68b3’ ‘6701’ ‘edd6a25e-ba9b-4f0c-bcd7-20e9bfa4df39’
提示错误:storm ‘*/stormconf.ser’ does not exist

解决方案:

先关闭所有节点的zookeeper和supervisor,nimbus,ui

1.删除所有节点中的storm.yaml内对应的storm.localdir对应的目录内的东西

2.删除zookeeper配置文件中

dataDir=/home/storm/zkdata
dataLogDir=/home/storm/zklogs

目录下的所有东西,然后重启

<think> 我们正在解决如何从Halcon序列化后的HSerializedItem对象中获取字节数据(HTuple形式)的问题。 用户已经知道使用SerializeShapeModel函数将模型序列化到HSerializedItem,现在需要获取这个序列化项的字节流(即ser数据)。 步骤: 1. 序列化模型得到HSerializedItem对象。 2. 使用GetSerializedItemPtr函数获取序列化数据的内存指针和大小。 3. 将指针指向的内存数据复制到HTuple(字节流形式)或直接处理。 注意:HTuple可以表示字节流,即一个整数元组,每个整数在0-255之间。 具体代码示例: </think> ### 在Halcon中获取SerializeShapeModel生成的字节流数据 在Halcon中将模型序列化为HTuple字节流后,可通过以下步骤获取序列化数据(ser数据): #### 核心方法:使用`GetSerializedItemPtr` ```cpp // 序列化模型(示例:形状模板) HShapeModel model; SerializeShapeModel(model, &serialized_item); // 序列化得到HSerializedItem对象 // 关键步骤:获取字节流指针和大小 HTuple ptr, size; GetSerializedItemPtr(serialized_item, &ptr, &size); // 获取内存指针和数据长度 ``` #### 完整数据提取流程 1. **获取序列化数据指针**: ```cpp // ptr[0] 包含内存起始地址,size[0]包含字节长度 Hlong data_address = ptr[0].L(); // 内存地址转为整数类型 Hlong data_length = size[0].I(); // 数据长度转为整数 ``` 2. **转换为字节数组**: ```cpp // 创建字节容器存储数据 std::vector<unsigned char> byte_data; byte_data.resize(data_length); // 复制内存数据(核心操作) memcpy(byte_data.data(), (void*)data_address, data_length); ``` 3. **转为HTuple字节流格式**: ```cpp // 将vector转为HTuple(每个元素0-255) HTuple ser_data; for (const auto& byte : byte_data) { ser_data.Append(static_cast<Hlong>(byte)); } ``` #### 使用HTuple操作接口(更高效) ```cpp // 直接使用HTuple处理字节流 HTuple ser_data = HTuple::GenConst(size[0], 0); // 创建等长元组 for (Hlong i = 0; i < size[0]; ++i) { unsigned char* byte_ptr = (unsigned char*)(data_address + i); ser_data[i] = *byte_ptr; // 逐字节填充 } ``` ### 关键注意事项 1. **内存生命周期管理**: ```cpp // 必须保持serialized_item有效期间访问数据 { HSerializedItem item = ...; // 序列化对象 HTuple ptr, size; GetSerializedItemPtr(item, &ptr, &size); // 在此作用域内使用ptr } // item离开作用域后ptr失效 ``` 2. **数据验证方法**: ```cpp // 校验字节流头标识(Halcon序列化数据以"HTM"开头) if (byte_data.size() >= 3 && byte_data[0] == 'H' && byte_data[1] == 'T' && byte_data[2] == 'M') { // 有效数据 } ``` 3. **嵌入式系统优化**: ```cpp // 直接映射到常量数组(避免内存复制) const unsigned char* model_data = (const unsigned char*)data_address; // 直接使用model_data指针操作 ``` ### 完整示例代码 ```cpp HShapeModel CreateAndSerializeModel() { // 创建示例模型 HImage img("printer_chip/printer_chip_01.png"); HShapeModel model = img.CreateShapeModel(5, -0.39, 0.78, "auto", "auto", "use_polarity", "auto"); // 序列化模型 HSerializedItem serialized_item; SerializeShapeModel(model, &serialized_item); // 获取字节流数据 HTuple ptr, size; GetSerializedItemPtr(serialized_item, &ptr, &size); Hlong addr = ptr[0].L(); HTuple ser_data = HTuple::GenConst(size[0], 0); for(Hlong i = 0; i < size[0]; ++i) { ser_data[i] = *((unsigned char*)(addr + i)); } return ser_data; // 返回HTuple格式字节流 } ``` ### 典型应用场景 1. **网络传输**: ```cpp // 发送序列化数据 send(socket, (char*)byte_data.data(), byte_data.size(), 0); ``` 2. **文件存储**: ```cpp std::ofstream file("model.bin", std::ios::binary); file.write(reinterpret_cast<char*>(byte_data.data()), byte_data.size()); ``` 3. **内存加载**: ```cpp HSerializedItem new_item; new_item.DeserializeItem(byte_data.data(), byte_data.size()); HShapeModel loaded_model; DeserializeShapeModel(new_item, &loaded_model); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值