完全分布式hdfs 路径问题造成

本文介绍如何配置 Druid 使用 HDFS 存储索引日志。通过设置 druid.indexer.logs.type 和 druid.indexer.logs.directory 参数指定使用 HDFS,并提供具体的 HDFS 路径。

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

 

 

 

 

 


# For HDFS (make sure to include the HDFS extension and that your Hadoop config files in the cp):
druid.indexer.logs.type=hdfs
druid.indexer.logs.directory=hdfs://cluster1/druid/indexing-logs

#druid.indexer.logs.directory=hdfs://CentOSNode1:9000/druid/indexing-logs
 

### Hadoop 完全分布式集群中 HDFS 聯邦的基本配置與使用 HDFS联邦是一种用于解决传统HDFS架构中单点瓶颈问题的技术方案。通过引入多个独立的命名空间(Namespace),每个命名空间对应一个单独的NameNode,从而实现了更高的可扩展性和可用性[^2]。 #### 1. 配置环境准备 在搭建Hadoop完全分布式HDFS联邦之前,需确保以下前提条件已经满足: - 已安装并正确配置好Java运行环境。 - 下载并解压Hadoop二进制包至各节点服务器。 - 设置无密码SSH登录功能以便于跨节点通信。 - 修改`core-site.xml`, `hdfs-site.xml`等关键配置文件以适应新的联邦模式需求。 #### 2. 关键配置项说明 以下是几个重要的配置选项及其作用: ##### core-site.xml 定义全局属性如默认FS URI等。 ```xml <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://nameservice1</value> </property> </configuration> ``` ##### hdfs-site.xml 指定具体的NameNodes以及其对应的JournalNodes地址列表。 ```xml <configuration> <!-- Federation Configuration --> <property> <name>dfs.nameservices</name> <value>nameservice1,nameservice2</value> </property> <property> <name>dfs.ha.namenodes.nameservice1</name> <value>nn1,nn2</value> </property> <property> <name>dfs.namenode.rpc-address.nameservice1.nn1</name> <value>host1:8020</value> </property> <property> <name>dfs.namenode.rpc-address.nameservice1.nn2</name> <value>host2:8020</value> </property> <property> <name>dfs.client.failover.proxy.provider.nameservice1</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> <property> <name>dfs.ha.fencing.methods</name> <value>sshfence</value> </property> <property> <name>dfs.journalnode.edits.dir</name> <value>/path/to/jn/edits/dir</value> </property> </configuration> ``` #### 3. 启动服务流程 完成上述配置之后按照如下顺序启动相关组件: 1. **启动 JournalNodes**: 这些进程负责共享编辑日志给所有的Active Standby NameNodes. ```bash hadoop-daemons.sh start journalnode ``` 2. **格式化所有 NameNodes**: 对每一个新加入到联邦中的NameNode执行初始化命令。 ```bash hdfs namenode -format [-clusterId clusterID] ``` 3. **启动 HDFS 服务**: 使用标准脚本一次性开启整个集群的服务实例。 ```bash start-dfs.sh ``` 4. **验证状态正常与否** 可通过Web UI界面或者CLI工具查看各个NN的状态信息确认是否成功切换为主备关系。 #### 4. 数据操作示例 当联邦机制生效后,在客户端提交作业时无需关心具体哪个NS会被选作目标路径载体;只需遵循统一接口调用即可自动分配资源。 ```java Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(URI.create("hdfs://nameservice1"), conf); Path filePath = new Path("/example/file"); try (FSDataOutputStream outStream = fs.create(filePath)) { String content = "This is an example."; byte[] buffer = content.getBytes(StandardCharsets.UTF_8); outStream.write(buffer); } finally{ if(fs != null){ fs.close(); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值