HDFS常用命令及基于Hadoop集群的Flume架构搭建

HDFS常用命令

1、version

hadoop version

用于打印Hadoop版本信息。
version

2、dfsadmin

hadoop dfsadmin -report

用于查看集群存储空间使用情况及各节点存储空间使用情况。
dfsadmin1
dfsadmin2

3、fs命令

fs命令包下是hadoop内置的对于hadoop文件系统的各项操作,具体主要包括:

命令作用
-cat显示该文件的具体内容
-copyFromLocal从本地上传文件到HDFS文件系统中(单路径)
-copyToLocal从HDFS文件系统上下载文件到本地(单路径)
-cp复制
-du显示文件或文件属性
-ls显示HDFS系统在指定目录下的文件信息
-mkdir创建指定目录
-mv移动文件或目录(目录需要加-r参数)
-rm删除文件或目录(目录需要加-r参数)
-put从本地上传文件到HDFS文件系统中(多路径)
-get从HDFS文件系统上下载文件到本地(多路径)
…………

Flume

Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据同时储存于HDFS、HBase等几种存储器中;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
Flume_1.7.0下载地址
实现环境:CentOS 7Hadoop集群(未完成安装的请点击参考我发布的前两份博客资料)
(假定运行节点为Slave001)
Flume下载后放在根目录下的software文件夹下,使用tar命令进行解压安装。

tar -zxf ~/software/apache-flume-1.7.0-bin.tar.gz

接下来修改配置文件及环境变量:
//修改配置文件

cd ~/software/apache-flume-1.7.0-bin/conf
cp flume-env.sh.template flume-env.sh
vi flume-env.sh

在打开的flume-env.sh文件中改写JAVA_HOME的语句,将其修改为当前服务器jdk的安装目录

export JAVA_HOME=/home/hadoop/software/jdk1.8.0_231

//配置Flume环境变量(即在profile文件中加入Flume,使其加入系统路径中)

sudo vi /etc/profile

插入如下语句:

#flume
export FLUME_HOME=/home/hadoop/software/apache-flume-1.7.0-bin
export FlUME_CONF_DIR=$FLUME_HOME/conf
export PATH=$PATH:$FLUME_HOME/bin

然后reboot重启电脑,完成配置。

此时注意:重启电脑后该节点的各项HDFS进程已被停止,请注意需要重新开启HDFS进程保证后续指令可在HDFS系统上完成。
(包括zkServer.sh start-dfs.sh start-yarn.sh

验证Flume是否成功安装并配置成功:(若上一步配置结束后未重启可能导致该命令出错)

flume-ng version

若Flume成功安装,则命令行提示如下图所示:
Flume成功安装
最后,分发配置好的Flume到各个节点并完成相应服务器环境的配置

scp -r ~/software/apache-flume-1.7.0-bin/ Slave002:~/software/
scp -r ~/software/apache-flume-1.7.0-bin/ Slave002:~/software/

随后配置Slave002、Slave003的Flume环境变量,Flume安装结束,注意查看是否每个节点都已成功安装。

sudo vi /etc/profile

插入如下语句:

#flume
export FLUME_HOME=/home/hadoop/software/apache-flume-1.7.0-bin
export FlUME_CONF_DIR=$FLUME_HOME/conf
export PATH=$PATH:$FLUME_HOME/bin

成果如下图所示:
Flume在集群中安装完毕

本次Flume架构搭建完成。

将数据导入到 Hadoop 集群中的 HDFS 是大数据处理流程中常见的需求。以下是几种常用的方法和步骤,适用于不同的场景。 ### 1. 使用 HDFS 命令行工具 Hadoop 提供了命令行接口来操作 HDFS 文件系统,可以使用 `hadoop fs` 或 `hdfs dfs` 命令进行文件的上传、下载等操作。 - **上传本地文件到 HDFS** ```bash hdfs dfs -put /path/to/local/file /user/hadoop/ ``` - **从 HDFS 下载文件到本地** ```bash hdfs dfs -get /user/hadoop/remote-file /path/to/local/ ``` 这些命令允许用户直接与 HDFS 进行交互,并且是向集群中添加或移除数据的一种简单方式[^2]。 ### 2. 使用 Java API 对于需要集成进应用程序的数据导入任务,可以利用 Hadoop 提供的 Java API 来编写程序实现更复杂的逻辑。这通常涉及到创建一个配置对象,指定 HDFS 的 URI 和其他必要的参数,然后通过 `FileSystem` 类来进行读写操作。 ```java import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; public class HdfsUploader { public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); conf.set("fs.defaultFS", "hdfs://localhost:9000"); FileSystem fs = FileSystem.get(conf); Path srcPath = new Path("/path/to/local/file"); Path dstPath = new Path("/user/hadoop/"); fs.copyFromLocalFile(srcPath, dstPath); System.out.println("File uploaded to HDFS"); fs.close(); } } ``` 这段代码展示了如何使用 Java API 将本地文件复制到 HDFS 中。在实际应用中,可以根据业务需求扩展此功能[^1]。 ### 3. 利用 Sqoop Apache Sqoop 是一种用于在 Hadoop 和关系型数据库之间传输数据的工具。它能够高效地将大量数据从关系型数据库(如 MySQL, Oracle)导入到 HDFS 或者 Hive 表中。 - **安装并配置 Sqoop** 确保已经正确安装了 Sqoop 并将其路径加入环境变量中。 - **执行 Sqoop 导入作业** ```bash sqoop import \ --connect jdbc:mysql://db.example.com/mydatabase \ --username myuser \ --password mypass \ --table mytable \ --target-dir /user/hadoop/mytable_data ``` 这个例子演示了如何从 MySQL 数据库导入表 `mytable` 到 HDFS 上的一个目录下[^3]。 ### 4. 使用 Flume Flume 是一个高可靠、高性能的日志采集系统,适合于收集大量的日志数据并传输至 HDFS。它可以设置为持续监听某个源,比如网络端口或者本地文件夹,一旦有新数据就自动将其发送到 HDFS- **定义 Flume Agent 配置文件** 在配置文件中指定 source, channel 和 sink 的类型及属性。 - **启动 Flume Agent** ```bash flume-ng agent --conf conf --conf-file example.conf --name a1 -Dflume.root.logger=INFO,console ``` 通过这种方式,Flume 可以实时地将接收到的数据流存储到 HDFS 中去[^3]。 ### 注意事项 - 在生产环境中部署时,请确保所有节点的时间同步以及网络通信正常。 - 根据实际情况调整 Hadoop 的配置文件,例如 `core-site.xml`, `hdfs-site.xml` 等,以优化性能。 - 对于大规模数据迁移,建议采用分布式的方式提高效率,并考虑数据一致性问题。 以上方法提供了多种途径来满足不同情况下的数据导入需求。选择合适的方法取决于具体的应用场景和技术栈。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值