Linux下Hadoop与其他服务集成的通用流程与具体实现
在集成Hadoop与其他服务前,需完成以下通用配置:
JAVA_HOME环境变量(指向Java安装目录),确保java -version能正确显示版本信息。ssh-keygen -t rsa生成密钥对,将公钥(id_rsa.pub)追加到目标节点的~/.ssh/authorized_keys文件中,实现免密登录。/usr/local/hadoop),配置环境变量(HADOOP_HOME、PATH),并修改核心配置文件:
core-site.xml:设置HDFS默认文件系统URI(如hdfs://namenode:9000);hdfs-site.xml:配置HDFS存储目录(dfs.namenode.name.dir、dfs.datanode.data.dir)及副本数(dfs.replication,生产环境建议≥3);mapred-site.xml:指定MapReduce运行框架为YARN(mapreduce.framework.name=yarn);yarn-site.xml:配置ResourceManager地址(yarn.resourcemanager.hostname)及NodeManager辅助服务(yarn.nodemanager.aux-services=mapreduce_shuffle)。start-dfs.sh启动HDFS(格式化NameNode:hdfs namenode -format),通过start-yarn.sh启动YARN,使用jps命令验证关键进程(NameNode、DataNode、ResourceManager、NodeManager)是否运行正常。YARN是Hadoop的核心资源调度器,负责集群计算资源的管理与分配。集成步骤如下:
yarn-site.xml,设置ResourceManager地址(yarn.resourcemanager.hostname)、NodeManager辅助服务(yarn.nodemanager.aux-services=mapreduce.shuffle)及资源限制(如yarn.nodemanager.memory-mb、yarn.nodemanager.cpu-vcores)。mapred-site.xml,将MapReduce运行框架设置为YARN(mapreduce.framework.name=yarn)。start-yarn.sh启动YARN,通过jps查看ResourceManager、NodeManager进程,访问YARN Web界面(默认http://resourcemanager-host:8088)验证集群状态。hadoop jar命令运行内置MapReduce示例(如wordcount),将输入数据放在HDFS的/input目录,输出到/output目录,验证YARN是否能正确调度作业。Hive是基于Hadoop的数据仓库工具,提供SQL-like查询接口,其底层依赖HDFS存储数据、YARN调度资源。集成步骤如下:
HIVE_HOME、PATH)。hive-site.xml,设置Hive元数据存储路径(javax.jdo.option.ConnectionURL,如MySQL数据库)、HDFS默认文件系统(fs.defaultFS,指向HDFS NameNode)、YARN ResourceManager地址(yarn.resourcemanager.hostname)。schematool -initSchema -dbType mysql(若使用MySQL)初始化Hive元数据库,创建表结构。hive),创建表(如CREATE TABLE test (id INT, name STRING);),加载HDFS数据(LOAD DATA INPATH '/input/test.txt' INTO TABLE test;),执行SQL查询(SELECT * FROM test;),验证数据是否能正确读取与存储。HBase是分布式NoSQL数据库,依赖HDFS存储数据、ZooKeeper管理集群协调。集成步骤如下:
HBASE_HOME、PATH)。hbase-site.xml,设置HBase根目录(hbase.rootdir,如hdfs://namenode:9000/hbase)、ZooKeeper集群地址(hbase.zookeeper.quorum,如namenode,datanode1,datanode2)及端口(hbase.zookeeper.property.clientPort=2181)。start-hbase.sh启动HBase集群,通过jps查看HMaster、HRegionServer进程,访问HBase Web界面(默认http://hmaster-host:16010)验证状态。hbase shell)创建表(如create 'test', 'cf';),插入数据(put 'test', 'row1', 'cf:name', 'John';),通过Hive查询HBase表(需先创建外部表映射HBase表),验证数据一致性。Kafka是分布式流处理平台,用于实时数据采集与传输,可与Hadoop的MapReduce、Spark等组件集成,实现实时数据处理。集成步骤如下:
KAFKA_HOME、PATH),修改server.properties设置Broker ID(broker.id)、监听地址(listeners)、ZooKeeper地址(zookeeper.connect)。bin/zookeeper-server-start.sh config/zookeeper.properties),再启动Kafka Broker(bin/kafka-server-start.sh config/server.properties),创建Topic(bin/kafka-topics.sh --create --topic test --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1)。spark-streaming-kafka),编写Spark Streaming程序,使用KafkaUtils.createDirectStream从Kafka Topic读取数据,处理后写入HDFS(saveAsTextFile)。kafka.source.type=org.apache.flume.source.kafka.KafkaSource),HDFS作为数据 sink(hdfs.sink.type=hdfs),实现Kafka数据实时同步到HDFS。bin/kafka-console-producer.sh --topic test --bootstrap-server localhost:9092),运行Spark Streaming或Flume程序,检查HDFS目标目录是否生成处理后的数据。