大数据(1f)集群规划+版本选择(持续更)

本文详细介绍了大数据集群的两种规划方式:非高可用与高可用集群,并列举了所涉及的技术及其版本。同时,提供了数据项目技术选型时应考虑的因素及版本选择策略。

1、集群规划

1.1、非高可用集群规划

软件名服务名hadoop100hadoop101hadoop102
Hadoop(HDFS)DataNode111
Hadoop(HDFS)NameNode1
Hadoop(HDFS)SecondaryNameNode1
Hadoop(YARN)ResourceManager1
Hadoop(YARN)NodeManager111
ZooKeeperQuorumPeerMain111
MySQL1
HIVE1
Spark1
KafkaKafka111
Flume111
Sqoop1
HBaseHMaster1
HBaseHRegionServer111
Solrjar111
AtlasAtlas1

1.2、高可用集群规划

软件名服务名hadoop100hadoop101hadoop102
Hadoop(HDFS)DataNode111
Hadoop(HDFS)NameNode11
Hadoop(ZKFC)DFSZKFailoverController11
Hadoop(HDFS)JournalNode111
Hadoop(YARN)ResourceManager11
Hadoop(YARN)NodeManager111
ZooKeeperQuorumPeerMain111
MySQL1
HIVE1
Spark1
KafkaKafka111
Flume111
Sqoop1
Solrjar111
AtlasAtlas1

2、框架版本

名称版本下载地址
CentOS7-5
JDK1.8同下面HIVE
Hadoop3.1.3同下面HIVE
HIVE3.1.2https://download.youkuaiyun.com/download/Yellow_python/13782524
MySQL5.7.32https://dev.mysql.com/downloads/mysql/
MySQL的JDBC5.1.49https://dev.mysql.com/downloads/connector/j/
ZooKeeper3.5.7http://archive.apache.org/dist/
Spark3.0.0同上ZooKeeper
Kafka2.7.0同上ZooKeeper
Flume1.9同上ZooKeeper
Sqoop1.4.7同上ZooKeeper
Scala2.12.13https://www.scala-lang.org/download/
HBase2.4.9
Atlas2.1.0https://download.youkuaiyun.com/download/Yellow_python/79106345
Solr7.7.3

3、数据项目技术选型策略

3.1、技术选型策略

考虑因素说明例如
业务需求离线数仓、实时数仓离线用HIVE,实时用Flink
数据量数据量大小、数据变化量大小小数据用MySQL,大数据用Hadoop
数据种类关系型数据、非关系型数据
结构化数据、非结构化数据
文章可存ElasticSearch
社交网络可存Neo4j
技术成熟度技术越成熟,bug越少,方案越完善在人工智能领域,Python技术体系比Java技术体系更成熟
技术热度热度越高,技术资源越多冷门技术出bug了,可能找不到解决办法
冷门技术的翻译文档不多
学习难度难度越高,学习时间越长Keras比TensorFlow简单
两个框架都能解决问题的情况下优先选简单的
运维成本有些技术 开发快 但 维护难Scala的开发效率高于Java,但代码可读性更低 吧?
金钱有的软件要付费

3.2、版本选择策略

  1. 选稳的:Java8虽不是最新,但是很稳
  2. 第三个数字尽量选大的,比如Spark的3.0.2版本解决了3.0.1版本的一些bug
### 关于大数据与人工智能的代码数据库集成 #### 图数据库的应用案例 在处理高度关联的数据时,图数据库提供了高效的解决方案。通过节点边来表示实体及其关系,图数据库能够在复杂的网络结构中快速执行查询操作[^1]。 ```python from neo4j import GraphDatabase def create_friendship(tx, person1_name, person2_name): query = ( "MERGE (p1:Person { name: $person1_name }) " "MERGE (p2:Person { name: $person2_name }) " "MERGE (p1)-[:FRIEND]->(p2)" ) tx.run(query, person1_name=person1_name, person2_name=person2_name) driver = GraphDatabase.driver("bolt://localhost", auth=("neo4j", "password")) with driver.session() as session: session.write_transaction(create_friendship, "Alice", "Bob") ``` 此段代码展示了如何利用Neo4j创建两个人之间的友谊关系,体现了图数据库的强大功能。 #### NoSQL数据库MongoDB用于大数据应用 针对半结构化或结构化的大量数据集,MongoDB凭借其灵活的文档模型成为理想的选择之一。下面是一个简单的例子,说明了怎样使用Python连接到MongoDB并插入一条记录: ```python import pymongo client = pymongo.MongoClient("mongodb://localhost:27017/") db = client["mydatabase"] collection = db["customers"] customer_data = {"name": "John Doe", "address": "Highway 37"} result = collection.insert_one(customer_data) print(f"Inserted document with id {result.inserted_id}") ``` 这段脚本不仅实现了基本的操作,还突出了MongoDB易于与其他编程语言结合使用的特性[^2]。 #### Kafka作为消息队列支持实时数据分析 当面对持续流入的大规模流式数据源时,Apache Kafka因其卓越的消息传递机制而备受青睐。这里给出了一则生产者发送消息至Kafka主题的例子: ```java Properties props = new Properties(); props.put("bootstrap.servers", "localhost:9092"); props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); Producer<String, String> producer = new KafkaProducer<>(props); producer.send(new ProducerRecord<>("test-topic", "key", "message")); producer.close(); ``` 上述Java代码片段揭示了向指定的主题发布消息的过程,这是构建基于事件驱动架构的关键部分[^3]。 #### MySQL集群配置优化高并发环境下的表现 考虑到某些应用场景对事务一致性读写分离有着严格的要求,部署MySQL集群并通过合适的负载均衡策略可显著提升系统的整体性能。例如,在金融行业中实施这样的方案尤为重要[^4]。 ```sql CREATE USER 'replication_user'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%'; CHANGE MASTER TO MASTER_HOST='master_host_ip', MASTER_USER='replication_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=<log_position>; START SLAVE; ``` 以上SQL命令序列指导用户设置主从复制模式下的MySQL服务器间同步流程,从而增强服务可用性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值