1. 请列出正常工作的Hadoop集群中Hadoop都分别需要启动哪些进程,它们的作用分别是什么?
在一个正常工作的Hadoop集群中,需要启动多个关键进程以保证集群功能的正常运行。以下是这些主要进程及其作用:
-
NameNode:
- 管理HDFS的命名空间和客户端对文件的访问,存储文件系统的元数据。
-
DataNode:
- 在HDFS中存储实际的数据块,执行数据块的读写操作,并定期向NameNode发送心跳和块报告。
-
ResourceManager(YARN):
- 负责管理集群资源和调度作业,分配计算资源给各个任务。
-
NodeManager(YARN):
- 在每个工作节点上运行,监控节点的健康状况,执行任务,并报告资源使用情况给ResourceManager。
-
Secondary NameNode(Hadoop 1.x):
- 辅助NameNode,周期性合并EditLog和FsImage,减轻NameNode的负担。
-
Standby NameNode(Hadoop 2.x及更高版本):
- 作为Active NameNode的备份,提供故障转移功能。
-
JournalNode(Hadoop HA配置):
- 在HDFS的高可用性配置中,存储NameNode的状态信息,使得多个NameNode可以共享状态。
-
ZooKeeper(Hadoop HA配置):
- 管理ResourceManager和NameNode的选举,确保ResourceManager和Active NameNode的高可用性。
-
HDFS Client:
- 客户端库,用于访问HDFS,执行文件读写操作。
-
YARN Client:
- 客户端库,用于提交MapReduce作业和其他计算任务。
-
MapReduce JobTracker(Hadoop 1.x):
- 负责作业的调度和监控,已被YARN的ResourceManager取代。
-
HistoryServer(MapReduce):
- 记录已完成作业的历史信息,供用户查询。
-
HBase Master 和 HBase RegionServer(如果使用HBase):
- HBase Master管理表和区域的元数据,HBase RegionServer负责存储和处理表数据。
-
Hive Metastore(如果使用Hive):
- 存储Hive表的元数据信息。
-
Oozie Server(如果使用Oozie):
- 工作流调度器,用于管理Hadoop作业的执行。
-
Flume Agent(如果使用Flume):
- 用于数据的收集和传输。
-
Kafka Broker(如果使用Kafka):
- 消息队列系统,用于数据的发布和订阅。
-
Spark Master 和 Spark Worker(如果使用Spark):
- Spark Master负责作业调度,Spark Worker执行计算任务。
这些进程构成了Hadoop生态系统的基础,使得Hadoop集群能够高效地存储、管理和处理大规模数据集。根据集群的具体配置和所运行的应用程序,可能还需要启动其他相关的服务和守护进程。
2. 简述Hadoop序列化和反序列化及自定义bean对象实现序列化 ?
在Hadoop中,序列化是将对象状态转换为可以存储或传输的格式的过程,而反序列化是将序列化后的数据恢复为对象的过程。Hadoop提供了自己的序列化机制,用于高效地处理大量数据的读写操作。
Hadoop序列化和反序列化:
-
Writable接口:
- Hadoop提供了
Writable
接口,任何想要被Hadoop框架序列化和反序列化的类都必须实现这个接口。
- Hadoop提供了
-
序列化:
- 序列化过程涉及到将对象的字段转换为字节流。
Writable
接口的write(DataOutput out)
方法用于将对象状态写入到DataOutput
流。
- 序列化过程涉及到将对象的字段转换为字节流。
-
反序列化ÿ