CentOS环境下HDFS与其他系统的集成流程与实践
在集成HDFS与其他系统前,需完成以下通用准备工作:
JAVA_HOME环境变量(如export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk)。ssh-keygen -t rsa生成密钥对,将公钥(id_rsa.pub)追加到~/.ssh/authorized_keys中,实现NameNode、DataNode等节点间的免密访问。/usr/local/hadoop-3.3.1),并通过export HADOOP_HOME=/usr/local/hadoop-3.3.1、export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin配置环境变量。配置HDFS的基础参数,确保其作为分布式文件系统正常运行:
core-site.xml:设置HDFS的默认文件系统URI,指向NameNode地址(如hdfs://localhost:9000),配置临时目录(hadoop.tmp.dir,如/usr/local/hadoop-3.3.1/tmp)。hdfs-site.xml:定义HDFS数据存储目录(dfs.datanode.data.dir,如/usr/local/hadoop-3.3.1/data)、副本数(dfs.replication,生产环境建议3,测试环境可设为1)。hdfs namenode -format,初始化HDFS元数据(注意:格式化会清除已有数据,仅首次使用需执行)。start-dfs.sh启动NameNode、DataNode等服务,通过jps命令检查进程(应看到NameNode、DataNode),并通过hadoop fs -ls /验证HDFS文件系统是否可访问。YARN是Hadoop的资源管理器,负责为MapReduce、Spark等计算框架分配资源。集成步骤如下:
yarn-site.xml:设置ResourceManager地址(yarn.resourcemanager.hostname,如localhost)、NodeManager辅助服务(yarn.nodemanager.aux-services,需设置为mapreduce_shuffle,支持MapReduce shuffle操作)。mapred-site.xml:指定MapReduce框架运行在YARN上(mapreduce.framework.name设为yarn)。start-yarn.sh启动ResourceManager、NodeManager等服务,通过jps检查进程(应看到ResourceManager、NodeManager)。hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar wordcount /input /output),若作业能正常提交、执行并输出结果,则集成成功。Spark是内存计算框架,可与HDFS无缝集成,实现高效数据处理:
/usr/local/spark-3.1.2-bin-hadoop3.2),配置环境变量(export SPARK_HOME=/usr/local/spark-3.1.2-bin-hadoop3.2、export PATH=$PATH:$SPARK_HOME/bin)。spark-defaults.conf,添加以下参数:spark.executor.extraJavaOptions -Ddfs.replication=1
spark.driver.extraJavaOptions -Ddfs.replication=1
或在代码中指定HDFS地址(如sparkContext.hadoopConfiguration.set("fs.defaultFS", "hdfs://localhost:9000"))。spark-submit --master spark://localhost:7077 --class org.apache.spark.examples.SparkPi $SPARK_HOME/examples/jars/spark-examples_2.12-3.1.2.jar 10),验证数据能否正常读写HDFS。Storm是实时计算框架,可将处理后的数据批量写入HDFS:
storm.yaml中添加HDFS配置:storm.blobstore.hdfs.path: "/storm/blobstore"
storm.blobstore.hdfs.host: "hdfs://namenode:8020"
storm.blobstore.hdfs.config.dir: "/path/to/hadoop/conf"
storm.blobstore.replication.factor: 3
storm-hdfs依赖(Maven配置):<dependency>
    <groupId>org.apache.storm</groupId>
    <artifactId>storm-hdfs</artifactId>
    <version>${storm.version}</version>
</dependency>
|)、旋转策略(如每100个tuple刷新一次、每1MB创建新文件):RecordFormat format = new DelimitedRecordFormat().withFieldDelimiter("|");
SyncPolicy syncPolicy = new CountSyncPolicy(100);
FileRotationPolicy rotationPolicy = new FileSizeRotationPolicy(1.0f, Units.MB);
FileNameFormat fileNameFormat = new DefaultFileNameFormat().withPath("/storm-hdfs/");
HdfsBolt hdfsBolt = new HdfsBolt()
        .withFsUrl("hdfs://hadoop001:8020")
        .withFileNameFormat(fileNameFormat)
        .withRecordFormat(format)
        .withRotationPolicy(rotationPolicy)
        .withSyncPolicy(syncPolicy);
mvn clean package -Dmaven.test.skip=true),提交至Storm集群(storm submit --class com.example.DataToHdfsApp topology.jar cluster),数据将存储至HDFS的/storm-hdfs目录。Hive是数据仓库工具,可将结构化数据映射到HDFS文件(如ORC、Parquet),并提供HiveQL查询接口:
/usr/local/hive-3.1.2),配置环境变量(export HIVE_HOME=/usr/local/hive-3.1.2、export PATH=$PATH:$HIVE_HOME/bin)。hive-site.xml,设置HDFS仓库路径(hive.metastore.warehouse.dir,如hdfs://localhost:9000/user/hive/warehouse)、Metastore数据库(如MySQL,需配置连接信息)。hive --service metastore &,启动Hive服务(hive)。CREATE TABLE logs (id INT, message STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE;),将本地数据导入Hive表(LOAD DATA LOCAL INPATH '/path/to/local/data.csv' INTO TABLE logs;),数据将自动存储至HDFS的/user/hive/warehouse/logs目录,可通过HiveQL查询(SELECT * FROM logs;)。hadoop fs -ls /、spark-shell、storm ui)或Web界面(如HDFS的http://localhost:9870、YARN的http://localhost:8088)检查数据读写、任务执行状态。hadoop或root)对HDFS存储目录有读写权限(可通过hadoop fs -chmod -R 777 /path调整)。core-site.xml、hdfs-site.xml)需保持一致,避免因配置差异导致服务异常。