ERROR (ConnectionError): HTTPConnectionPool (Caused by <class 'socket.error'>: [Errno 111] Conne...

本文介绍了解决OpenStack环境中Nova API服务无法启动的问题。主要原因是Nova API与Nova元数据API服务尝试使用相同的端口导致冲突。文章提供了详细的步骤来解决此问题,包括停止元数据API服务并重启Nova API服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

感谢朋友支持本博客,欢迎共同探讨交流,由于能力和时间有限,错误之处在所难免,欢迎指正!
如果转载,请保留作者信息。
博客地址:http://blog.youkuaiyun.com/qq_21398167

原博文地址:http://blog.youkuaiyun.com/qq_21398167/article/details/46987669

突然有一天使用 nova list  出现错误了

root@openstackcloud1:~# nova list

ERROR:HTTPConnectionPool(host='openstackcloud1', port=35357):Max retries exceededwith url:/v2.0/tokens(Causedby<class'socket.error'>:[Errno111]Connection refused)


原因是  nova-api service   没有启动起来

结果启动 还失败了

# service openstack-nova-api restart
Redirecting to /bin/systemctl restart  openstack-nova-api.service
Job for openstack-nova-api.service failed. See 'systemctl status openstack-nova-api.service' and 'journalctl -xn' for details.

通过查询错误日志 /var/log/nova/nova-api.log

看到如下错误:

2015-07-21 04:11:30.800 6879 ERROR nova.wsgi [-] Could not bind to 0.0.0.0:8775

原因是

openstack-nova-api and openstack-nova-metadata-api both run on the same port so you are getting "Address already in use" error.Try stopping "openstack-nova-metadata-api" service and run "openstack-nova-api".

只需两步

# service openstack-nova-metadata-api stop

# service openstack-nova-api restart

成功了

[root@localhost Desktop]# service openstack-nova-metadata-api stop
Redirecting to /bin/systemctl stop  openstack-nova-metadata-api.service
[root@localhost Desktop]# service openstack-nova-api restart
Redirecting to /bin/systemctl restart  openstack-nova-api.service


转载于:https://my.oschina.net/shadai/blog/699063

### HBase 集群初始化失败的原因分析 HBase集群初始化失败通常由多种原因引起,其中包括但不限于JAR包版本冲突、依赖配置不正确以及HBase站点配置文件中的参数设置不当等问题。 #### JAR包冲突排查 根据描述,`java.io.IOException: java.lang.reflect.InvocationTargetException` 和 `Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.hadoop.hbase.protobuf.ProtobufUtil` 的错误表明存在类加载问题[^2]。这通常是由于不同版本的Hadoop或HBase库之间的兼容性问题引起的。建议通过以下方式解决问题: 1. **确认JAR包路径一致性** 使用命令查找相关JAR包的位置并验证其版本是否一致: ```bash find / -name hadoop-mapreduce-client-jobclient-*.jar find / -name hadoop-mapreduce-client-common-*.jar ``` 如果发现多个版本的JAR包共存,则可能导致类加载器无法找到正确的实现类[^1]。 2. **清理多余依赖** 确保项目中只引入了一个版本的Hadoop和HBase库。可以通过Maven Dependency插件来检查依赖树是否存在冲突: ```bash mvn dependency:tree | grep hbase ``` #### Maven POM.XML 配置调整 为了确保HBase MapReduce作业能够正常运行,POM.XML 文件应包含如下核心依赖项,并注意排除可能引发冲突的子模块: ```xml <dependencies> <!-- Apache Hadoop Core --> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>3.2.1</version> <!-- 根据实际使用的CDH版本调整 --> </dependency> <!-- Apache HBase Client --> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>2.4.9</version> <!-- 版本需与HBase服务器匹配 --> </dependency> <!-- Exclude potential conflicts from transitive dependencies --> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-mapreduce-client-core</artifactId> <version>3.2.1</version> <exclusions> <exclusion> <groupId>*</groupId> <artifactId>*</artifactId> </exclusion> </exclusions> </dependency> </dependencies> ``` 上述配置中特别强调了对传递性依赖的排除操作,以减少因第三方库带来的潜在冲突风险[^3]。 #### HBase-Site.xml 参数校验 除了依赖管理外,还需要仔细核对HBase站点配置文件的内容。以下是几个关键属性及其推荐值: - 设置ZooKeeper集群地址及端口号: ```xml <property> <name>hbase.zookeeper.quorum</name> <value>hadoop01,hadoop02,hadoop03</value> </property> <property> <name>hbase.zookeeper.property.clientPort</name> <value>2181</value> </property> ``` - 明确指定根目录位置: ```xml <property> <name>hbase.rootdir</name> <value>hdfs://qf/hbase</value> </property> ``` - 开启分布式模式支持: ```xml <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> ``` 以上配置片段均来自标准生产环境实践案例[^5]。 --- ### 示例代码修正 对于基于Spark访问HBase的应用场景,可以参考以下改进后的代码结构: ```scala import org.apache.hadoop.conf.Configuration import org.apache.hadoop.hbase.HBaseConfiguration import org.apache.hadoop.hbase.mapreduce.TableInputFormat import org.apache.log4j.Logger import org.apache.spark.{SparkConf, SparkContext} object SparkOperateHBase { def main(args: Array[String]): Unit = { val logger = Logger.getLogger(this.getClass) // 创建HBase Configuration实例 val conf = HBaseConfiguration.create() conf.set("hbase.zookeeper.quorum", "hadoop01,hadoop02,hadoop03") conf.set("hbase.zookeeper.property.clientPort", "2181") conf.set("zookeeper.znode.parent", "/hbase-unsecure") // 指定输入表名称 conf.set(TableInputFormat.INPUT_TABLE, "test1") // 初始化Spark上下文 val sparkConf = new SparkConf().setMaster("local[*]").setAppName("SparkOperateHBase") val sc = new SparkContext(sparkConf) try { val rdd = sc.newAPIHadoopRDD( conf, classOf[TableInputFormat], classOf[org.apache.hadoop.hbase.io.ImmutableBytesWritable], classOf[org.apache.hadoop.hbase.client.Result] ) val count = rdd.count() println(s"Total Records in Table 'test1': $count") } catch { case e: Exception => logger.error("Failed to read data from HBase table.", e) } finally { sc.stop() } } } ``` 此代码示例展示了如何安全地处理异常情况,并提供了详细的日志记录以便于后续调试[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值