我已手动安装了具有以下配置的三节点群集:
Master/Slave Node 0 - NameNode, Secondary NameNode, JobTracker, HMaster,
DataNode, TaskTracker, HRegionServer,
Hive MetaStore, Database for Hive/Sqoop, HiveServer2, HCatalog,
Oozie Server,
Zookeeper,
Oozie-client, Hive-client, pig-client, M/R client tools, Sqoop
Slave Node 1 - DataNode, TaskTracker, HRegionServer,
Oozie-client, Hive-client, pig-client, M/R client tools, Sqoop
Slave Node 2 - DataNode, TaskTracker, HRegionServer,
Oozie-client, Hive-client, pig-client, M/R client tools, Sqoop
我希望有一个更现实的群集。我正在考虑使用12-14个节点进行以下操作:
Master 0: Name Node
Master 1: Secondary NameNode
Master 2: JobTracker
Master 3: HMaster
Slave 0: DataNode, TraskTracker, HRegionServer
Slave 1: DataNode, TraskTracker, HRegionServer
Slave 2: DataNode, TraskTracker, HRegionServer
Hive/Catalog Node: Hive MetaStore,
Sqoop MetaStore
MySQL/PostgreSQL Database for Hive/Sqoop,
HCatalog,
HiveServer (Or is it better to break HiveServer into its own node?)
Oozie-Server (Or is it better to break Oozie-server into its own node?)
Zookeeper Ensemble: 3 Nodes with Zookeper installed
客户端节点:Oozie-client,Hive-client,pig-client,M / R客户端工具,Sqoop
或者,以图表格式:
我知道Cloudera喜欢你:
A separate Master Node for each Master Process (NameNode, Secondary NameNode, JobTracker, HMaster)
3 Slave nodes with DataNode, TaskTracker, and HRegionServer
3 Zookeeper Nodes
"The database, the HiveServer process, and the metastore service can all
be on the same host, but running the HiveServer process on a separate host
provides better availability and scalability."
我为我的Hive数据库和我的Oozie数据库使用了相同的MySQL实例,并认为可以再做一次。我还想知道HiveServer和Oozie服务器可以和Hive / Oozie MetaStore一起运行在主机上,还有HCatalog。
目前在我的三节点集群上,我已在每个节点上安装了所有客户端软件,因此我可以从任何节点执行M / R,Hive,Oozie,HBase,Pig等客户端调用。这些客户端工具是否应该在与主节点和从节点分开的节点上执行?说到这一点,我把所有的java / python / pig代码放在我的三节点集群中的主节点上。这些数据是否也更好地放在单独的客户端节点上?
我在正确的道路上吗?制作最小但理想的群集的正确方法是什么?
答案 0 :(得分:2)
您的设置在大多数情况下看起来非常标准。不幸的是,没有“理想”的集群,这完全取决于您的工作量。如果你需要大量的计算,可能最好在MapReduce组件上加重。如果您只打算使用HBase进行低延迟访问,那么您可能希望完全放弃MapReduce。
我会对您的设置提出一些一般性建议。
您可以将RegionServers与Zookeeper节点共置,只需为Zookeeper节点提供自己的磁盘即可。
小心共同定位TaskTrackers和RegionServers,特别是如果您的大部分HBase使用都是重扫描的话。这两个进程都是CPU和内存密集型的,可能会导致资源争用问题。 This page详细了解了在这种情况下该怎么做
就代码组织和客户端设置而言,这真的是你的电话。我个人更喜欢设置一些gateway nodes,它们具有与hive,hbase等交谈的所有配置以及从那里运行的工作,但同样没有完美的答案。