hadf

hadoop两个组成部分:hdfs系统和mapreduce并行计算框架

hdfs设计架构

-块(block):固定大小的逻辑单元,hdfs的文件被分成块进行存储,默认值为64MB

-NameNode:管理节点,存放文件元数据。

(1)文件与数据块的映射表

(2)数据库与数据节点的映射表

-DataNode:工作节点,存放数据块

hdfs中文件读写的流程

读:1.客户端(java程序或命令行)向NameNode文件请求读取。

2.NameNode返回数据存储的块信息

3.读取Blocks

hdfs写文件流程

1.客户端拆分文件称blocks,通知NameNode

2.NameNode找到一些可以用的DataNode,返回给客户端

3.客户端写入blocks

4.流水线复制

5.更新元数据,告诉NameNode,保持最新的状态。

Hdfs的特点,与传统的文件管理系统的不同

1.数据冗余,硬件容错

2.流式,一次写入,多次读写,不支持多用户并发写入

3.大的文件

 

module xuanz( input clk, input rst_n, output reg rdreq_sig1, output reg rdreq_sig2, output reg rdreq_sig3, output reg rdreq_sig4, input [12:0]rdusedw_sig1, input [63:0]out1, input [12:0]rdusedw_sig2, input [63:0]out2, input [12:0]rdusedw_sig3, input [63:0]out3, input [12:0]rdusedw_sig4, input [63:0]out4, output wire[63:0]out, output reg data_valid ); localparam IDLE =5'b00001; localparam status1=5'b00010; localparam status2=5'b00100; localparam status3=5'b01000; localparam status4=5'b10000; reg [4:0] data; reg [12:0]data1; reg [12:0]data2; reg [12:0]data3; reg [12:0]data4; reg [63:0]Header; reg [63:0]cnt_Header; reg [63:0]cnt_1; reg [63:0]cnt_2; reg [63:0]cnt_3; reg [63:0]cnt_4; reg biaozhi_1; reg biaozhi_2; reg biaozhi_3; reg biaozhi_4; reg ABC; always @ (posedge clk or negedge rst_n) begin if (~rst_n)begin data<=IDLE; biaozhi_1<=1'd0; biaozhi_2<=1'd0; biaozhi_3<=1'd0; biaozhi_4<=1'd0; data_valid<=1'd0; data1<=1'd0; data2<=1'd0; data3<=1'd0; data4<=1'd0; ABC<=1'd0; end else begin case(data) IDLE: begin data<=status1; end status1: begin if(rdusedw_sig1==(data1-13'd127)) begin biaozhi_1<=1'd0; data<=status2; data_valid<=1'd0; end else if(biaozhi_1==1'd1) begin data<=data; ABC<=1'd0; end else if(rdusedw_sig1>=13'd127) begin data1<=rdusedw_sig1; biaozhi_1<=1'd1; data_valid<=1'd1; ABC<=1'd1; end else data<=status2; end status2: begin if(rdusedw_sig2==(data2-13'd127)) begin biaozhi_2<=1'd0; data<=status3; data_valid<=1'd0; end else if(biaozhi_2==1'd1) begin data<=data; ABC<=1'd0; end else if(rdusedw_sig2>=13'd127) begin data2<=rdusedw_sig2; biaozhi_2<=1'd1; data_valid<=1'd1; ABC<=1'd1; end else data<=status3; end status3: begin if(rdusedw_sig3==(data3-13'd127)) begin biaozhi_3<=1'd0; data<=status4; data_valid<=1'd0; end else if(biaozhi_3==1'd1) begin data<=data; ABC<=1'd0; end else if(rdusedw_sig3>=13'd127) begin data3<=rdusedw_sig3; biaozhi_3<=1'd1; data_valid<=1'd1; ABC<=1'd1; end else data<=status4; end status4: begin if(rdusedw_sig4==(data4-13'd127)) begin biaozhi_4<=1'd0; data<=status1; data_valid<=1'd0; end else if(biaozhi_4==1'd1) begin data<=data; ABC<=1'd0; end else if(rdusedw_sig4>=13'd127) begin data4<=rdusedw_sig4; biaozhi_4<=1'd1; data_valid<=1'd1; ABC<=1'd1; end else data<=status1; end default data<=IDLE; endcase end end always @ (posedge clk or negedge rst_n) begin if (~rst_n)begin Header<=1'd0; cnt_Header<=1'd0; rdreq_sig1<=1'd0; rdreq_sig2<=1'd0; rdreq_sig3<=1'd0; rdreq_sig4<=1'd0; cnt_1<=1'd0; cnt_2<=1'd0; cnt_3<=1'd0; cnt_4<=1'd0; end else if(data_valid==1'd0) begin rdreq_sig1<=1'd0; rdreq_sig2<=1'd0; rdreq_sig3<=1'd0; rdreq_sig4<=1'd0; end else if(cnt_Header==1'd1&&biaozhi_1==1'd1) begin cnt_Header<=cnt_Header+1'd1; Header<=cnt_1; end else if(cnt_Header==2'd2&&biaozhi_1==1'd1) begin cnt_Header<=1'd0; Header<=1'd0; rdreq_sig1<=1'd1; end else if(ABC==1'd1&&biaozhi_1==1'd1) begin cnt_Header<=cnt_Header+1'd1; Header<={32'hadf90c00,32'h1}; cnt_1<=cnt_1+1'd1; end else if(ABC==1'd1&&biaozhi_2==1'd1) begin cnt_Header<=cnt_Header+1'd1; Header<={32'hadf90c00,32'h2}; cnt_2<=cnt_2+1'd1; end else if(cnt_Header==1'd1&&biaozhi_2==1'd1) begin cnt_Header<=cnt_Header+1'd1; Header<=cnt_2; end else if(cnt_Header==2'd2&&biaozhi_2==1'd1) begin cnt_Header<=1'd0; Header<=1'd0; rdreq_sig2<=1'd1; end else if(ABC==1'd1&&biaozhi_2==1'd1) begin cnt_Header<=cnt_Header+1'd1; Header<={32'hadf90c00,32'h2}; cnt_2<=cnt_2+1'd1; end else if(cnt_Header==1'd1&&biaozhi_3==1'd1) begin cnt_Header<=cnt_Header+1'd1; Header<=cnt_3; end else if(cnt_Header==2'd2&&biaozhi_3==1'd1) begin cnt_Header<=1'd0; Header<=1'd0; rdreq_sig3<=1'd1; end else if(ABC==1'd1&&biaozhi_3==1'd1) begin cnt_Header<=cnt_Header+1'd1; Header<={32'hadf90c00,32'h3}; cnt_3<=cnt_3+1'd1; end else if(cnt_Header==1'd1&&biaozhi_4==1'd1) begin cnt_Header<=cnt_Header+1'd1; Header<=cnt_4; end else if(cnt_Header==2'd2&&biaozhi_4==1'd1) begin cnt_Header<=1'd0; Header<=1'd0; rdreq_sig4<=1'd1; end else if(ABC==1'd1&&biaozhi_4==1'd1) begin cnt_Header<=cnt_Header+1'd1; Header<={32'hadf90c00,32'h4}; cnt_4<=cnt_4+1'd1; end end assign out=(rdreq_sig1==1'd1)?out1: (rdreq_sig2==1'd1)?out2: (rdreq_sig3==1'd1)?out3: (rdreq_sig4==1'd1)?out4:Header; endmodule
最新发布
09-30
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值