使用 hadoop file shell 可以方便地向 hdfs put 文件,但是,该 shell 不支持从管道读取数据并放到 hdfs 文件中。它仅支持这样的 put 命令:
cd $HADOOP_HOME
bin/hadoop fs -put localfile $hdfsFile
bin/hadoop fs -put localfiles $hdfsDir
幸好,主流的 unix (linux,bsd等)都有一个 /dev/fd/
目录,可以用它实现从管道 put 文件
cd $HADOOP_HOME
if bin/hadoop fs -test -d $hdfsFile
then
echo "$hdfsFile is a directory" >&2
exit 1
fi
cat localfileS | bin/hadoop fs -put /dev/fd/0 $hdfsFile
if [[ "0 0" == ${PIPESTATUS[*]} ]]
then
echo success
else
bin/hadoop fs -rm $hdfsFile
echo failed >&2
fi
其中,使用 PIPESTATUS 检查错误
。
需要注意,使用 /dev/fd/0
put 文件时,hdfsFile 必须事先不存在,并且不能是一个目录,如果hdfsFile实际上是一个目录,那么,put 仍然正确执行,但是,hdfs 中的文件名将是 hdfsFile/0
/dev/fd/ 中是进程所有已打开的文件描述符列表,例如 /dev/fd/0 代表标准输入,/dev/fd/1 代表标准输出,/dev/fd/2 代表标准错误输出,等等,打开 /dev/fd/n 相当于调用 dup(n) 。
分享到:
相关推荐
- **文件管理命令**:HDFS提供了丰富的命令用于管理文件和目录,如`hadoop fs -put`用于上传文件到HDFS,`hadoop fs -get`用于从HDFS下载文件等。 - **NameNode和DataNode**:HDFS由一个NameNode和多个DataNode...
3. **DataNode间数据传输**:客户端将数据写入DataNode,并通过管道传递给其他DataNode。 4. **确认副本完成**:最后一个DataNode通知客户端写入成功。 5. **关闭文件**:客户端通知NameNode关闭文件。 #### 十四、...
- `hadoop fs -put`: 将本地文件上传到HDFS。 - `hadoop fs -get`: 从HDFS下载文件到本地。 - `hadoop fs -rm`: 删除HDFS上的文件或目录。 - `hadoop fs -mv`: 在HDFS内部移动文件或目录。 2. **MapReduce操作*...
- Hadoop Shell提供了一种与HDFS(Hadoop Distributed File System)交互的方式,允许用户通过熟悉的Unix/Linux命令行界面执行文件管理和数据处理任务。 - 介绍Hadoop的命令行接口,包括`hadoop fs`命令,它是...
`pipes`命令用于创建简单的管道式MapReduce作业,通过本地程序执行Map和Reduce任务。 **命令格式**: ``` hadoop pipes [-version] [-compile <program> ] [-submit <input> <output> ] ``` **参数说明**: - `-...
- 使用命令 `hadoop fs -put /home/iperf-2.0.2.tar.gz /test-hzw` 上传文件 `iperf-2.0.2.tar.gz` 至 `/test-hzw`。 3. **监控数据流量:** - 在文件上传过程中,利用桌面云的端口镜像功能监测流入与流出 Client...
Hadoop是一个开源框架,可以存储和处理大量数据,它由HDFS(Hadoop分布式文件系统)和MapReduce编程模型组成。Spark则是一个快速的大数据处理框架,它基于内存计算,比Hadoop的MapReduce模型要快很多,适合于迭代...
如果没有Hive或Hue,也可以通过Hadoop的文件系统接口来查看处理后的数据。以下是实现这一功能的主要步骤: 1. **数据获取**:使用`QueryDatabaseTable`或`ExecuteSQL`处理器从MySQL中提取JSON格式的数据。这些...
Apache Kafka是一个分布式流处理平台,常用于实时数据管道和消息系统。Maven是Java项目管理工具,帮助开发者管理和构建项目,依赖管理和构建生命周期是其核心功能。 【描述】"kafka 最简单的消息生产与消费测试...
- 配置文件(如/etc/***f)中设置binlog_format,以及Flume的配置文件中定义各种Source、Channel和Sink,用于搭建数据流处理的管道。 10. **Flume中数据流的处理** - 数据从Source流入Channel,经过Interceptor...
Apache Kafka 是一个分布式流处理平台,它被广泛用于构建实时数据管道和流应用。在这个场景下,Kafka 担当数据源的角色,生产者将实时数据发布到特定的主题,而 Spark Streaming 作为消费者,从这些主题中消费数据。...