读取test.txt文件内容,依次配置

描述:测试中,测试修改学校名称时,通过执行修改学校名称时,查看是否修改成功

1.定义修改学校名称参数,+校验配置结果

def modify_school_name(school_name):
    # 学校名称修改页面
    driver.find_element_by_xpath("//*[@class='el-text el-text--default schoolName']").click()
    # 修改学校名称
    driver.find_element_by_xpath("//*[@class='el-input__inner']").send_keys(school_name)
    # 提交修改的学校名称
    driver.find_element_by_xpath("//*[@class='el-button el-button--primary el-button--default']").click()
    sleep(5)
    # driver.refresh()
    # 检验学校名称
    display_name = driver.find_element_by_xpath("//*[@class='el-text el-text--default schoolName']").text
    if display_name != school_name:
        logging.error(f'配置错误:预期 "{school_name}",实际"{display_name}"')

2.设置配置文件路径及文件读取方式

# 读取学校名称文件
def read_school_names(filename):
    with open(filename, 'r', encoding='utf - 8 ') as file:
        return [line.strip() for line in file]

# 读取学校名称
school_names = read_school_names('D:\AC-test\AC_test_python\schools.txt')

### 回答1: 根据HDFS的存储策略,文件会被分成多个块,每个块的大小默认为128MB(可以通过配置文件修改),并且每个块会被复制成多个副本存储在不同的datanode上,以保证数据的可靠性和容错性。在这个集群中,由于文件大小为424MB,因此会被分成4个块,每个块的大小为128MB,最后一个块的大小为40MB。每个块会被复制成3个副本,因此一共会有12个副本存储在6个datanode上。 下图展示了test.log文件在HDFS中的存储过程: ![HDFS存储过程](https://img-blog.csdnimg.cn/20220411161627630.png) 1. Namenode将文件test.log分成4个块,每个块的大小为128MB和40MB,并为每个块选择3个datanode作为副本存储节点。 2. Namenode将块的位置信息记录在元数据文件中,并将元数据文件存储在本地磁盘上。 3. Client通过HDFS API向Namenode请求读取文件test.log,Namenode返回文件的元数据信息,包括块的位置信息。 4. Client根据块的位置信息向对应的datanode请求读取数据,datanode返回数据给Client。 5. Client将读取到的数据合并成完整的文件test.log。 写入过程类似,只是在写入时,Client会将数据分成多个块,并将每个块的数据写入多个datanode上,以保证数据的可靠性和容错性。 ### 回答2: 在这个集群中,HDFS采用的是默认的存储策略,即一个文件被分割成多个数据块,并在集群的不同节点上进行副本存储。 首先,将文件test.log分成若干个块,假设每个块的大小为128MB(HDFS默认配置),则该文件将被分为4个块,其中前3个块大小为128MB,最后一个块大小为40MB。接下来将这些块分配到存储节点。 在HDFS中,通常会将namenode和datanode的位置信息记录在一个名为fsimage的文件中,用于存储集群的元数据。在这个例子中,假设namenode和datanode的位置信息如下图所示。 集群节点分布: - Namenode:Node1 - Datanode:Node2、Node3、Node4、Node5、Node6、Node7 读写过程如下: 1. 写入:当用户要将test.log文件写入HDFS时,首先会与namenode建立联系,namenode记录该写操作的元数据,并返回数据块的位置信息。 2. 将test.log文件按照块的大小划分成多个块,然后按照一定的策略(例如轮询)将这些块依次分配给datanode。 3. 每个块会在datanode上进行副本存储,根据HDFS的默认配置,每个块会生成3个副本。因此,在该例子中,每个块将会生成3个副本,并分别存储在相应的datanode上。 例如,第一个块的副本1存储在Node2,副本2存储在Node3,副本3存储在Node4。 4. 用户将test.log文件写入HDFS时,数据会首先写入本地副本,当本地副本写入成功后,副本会通过一定的复制策略(例如从节点距离最近、可用性最高等)依次复制到其他节点上的副本。 例如,第一个块的副本1在成功写入Node2后,会依次复制到Node3和Node4上。 5. 当所有块的副本都成功写入到各个datanode节点上时,写入操作完成。 总结:该集群中的test.log文件按照HDFS默认存储策略被分为4个块,并在集群的不同节点上生成3个副本。整个读写过程中,namenode负责元数据的管理和调度,datanode负责实际的数据存储和读写操作。 ### 回答3: 在HDFS中,文件的存储策略是将文件划分为多个数据块,并在集群中不同的计算机上存储这些数据块的副本。 假设文件test.log的大小为424MB,HDFS的块大小设置为128MB。根据块大小,test.log文件将被分为4个块,分别为块1、块2、块3和块4。 首先,文件在Namenode节点上进行元数据的记录和操作。Namenode维护了一个文件系统的命名空间,并且记录了文件如何被划分成块以及每个块的副本所在的Datanode节点。 接下来,Namenode将块1、块2、块3和块4的信息分别发送给6个Datanode节点,这些节点将承担存储文件块副本的任务。根据HDFS默认的复制策略,每个块将有3个副本。 在Datanode节点上,根据Namenode的指示,每个节点选择一个本地文件系统上的位置来存储块的副本。例如,Datanode1将存储块1的一个副本,Datanode2将存储块2的一个副本,以此类推。这样,运行时文件数据和元数据将被完整地分布在集群中的不同节点上。 当一个客户端进行文件的写入时,它将数据分割成适当的快大小,并使用网络将数据从客户端发送到Datanode节点,然后由Datanode节点存储数据副本。 当一个客户端进行文件读取时,它会向Namenode请求文件的位置信息,并得到每个块的各个副本所在的Datanode节点。然后,客户端通过网络从相应的Datanode节点获取块的副本数据,并将它们组合成完整的文件。 以下是图示的HDFS集群存储和读写过程: ``` +-------------+ | Client | +------^------+ | v +-------------+ | Namenode | +------^------+ | v +-------------+ +---> +------------+ | Datanode1 | | | Datanode2 | +-----^-----+ | | +------+-----+ | | | v | +-----^------+ | +----------+ +--^------+ | Datanode3 | | Datanode4 | | Datanode5 | +------+------+ +----^-----+ +-----^---+ | | v v +-----^------+ +-------+ | Datanode6 | | Backup | +------------+ +-------+ ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值