惊云网盘技术文档

4 篇文章 0 订阅
2 篇文章 0 订阅
			**惊云网盘技术文档**
  1. 登陆、注册
  2. 显示文件信息
  3. 内存空间计算
  4. 上传
  5. 下载
  6. 创建目录
  7. 删除文件

3,技术选型
主要依托:

  • 大数据与云计算基本框架(hdfs,HBase)
  • python36
    主要区别与一般的输入\输出流程序,在此用分布式的技术和思想解决网盘的问题
    4,架构
    在这里插入图片描述
    5,数据库设计方案
    (1)用户信息表
    –表名:user
    –列簇:c
    –行键:rowkey = userName
    –列名设计策略如下表:

    标题

(2)文件信息表
–表名:files_info
–列簇:c
–行键:rowkey = userName

  • 行键为该用户的用户名,该用户的所有文件信息均存储在该行键

–列名设计策略如下表:

列名value(string)
filename(各个文件的文件名)path(该文件存储路径)

–行键:rowkey = userName.size

  • 行键为该用户的用户名.size,该用户的所有文件的大小均存储在该行键

–列名设计策略如下表:

列名value(string)
filename(各个文件的文件名)size(该文件存储路径)

6,详细代码以及描述:

  1. 连接hbase,hdfs
from hbase import Hbase
from thrift.protocol import TBinaryProtocol
from thrift.transport import TSocket, TTransport
# 连接hbase
def hbase_con():
    # hbase服务器地址
    socket = TSocket.TSocket("192.168.153.201", "9090")

    # socket.setTimeout(500)
    # 永字节流的数据进行请求
    transport = TTransport.TBufferedTransport(socket)
    # 通信协议
    protocol = TBinaryProtocol.TBinaryProtocol(transport)
    # 客户端连接
    client = Hbase.Client(protocol)
    socket.open()
    return client
from hdfs.client import Client
hdfs_client = Client("http://192.168.153.201:50070",root="/")
  1. 登陆、注册
def zhuce():
    user = input("用户名:")
    pwd = input("密码:")
    write_hbase("user",user,user)
    write_hbase("pwd", pwd, user)
    hdfs_client.makedirs("/user_data/%s"%(user),permission=777)
    print("注册成功")

def login():
    user = input("请输入用户名:")
    pwd = input("请输入密码:")
    if len(hbase_client.getRow("users",user)) != 0 :
        pwd1 = hbase_client.getRowWithColumns("users", user, ["c:pwd"])[0].columns.get("c:pwd").value
        if pwd == pwd1:
          print("登陆成功!")
          return user
        else:
            print("密码错误,请重新输入")
            login()
    else:
        print("用户名错误")
        login()

  1. 显示文件信息

  2. 内存空间计算

def count_size_all(user):
    size_sum = 0
    size_list = login.hbase_client.getRow("files_info","%s.size"%user)
    values = list(size_list[0].columns.values())
    for rrow in values:
        size = rrow.value
        size_sum += int(size)
    return int(size_sum/1024/1024)
  1. 上传
def upload(user):
    path_local = input("请输入上传文件的路径(绝对路径):")
    file_name = input("请输入文件名:")
    path_hdfs = "/user_data/%s/%s" % (user, file_name)
    login.hdfs_client.upload(path_hdfs, path_local, overwrite=True)
    login.write_hbase_files(file_name, path_hdfs, user)
    value = str(os.path.getsize(path_local))
    login.write_hbase_files(file_name, value, "%s.size" % user)
    print("上传成功!")
  1. 下载
def download_file(user):
    path_local = input("请输入下载文件到本地的路径(绝对路径):")
    file_name = input("请输入需要下载的文件名:")
    path_hdfs = "/user_data/%s/%s" % (user, file_name)
    login.hdfs_client.download(path_hdfs, path_local, overwrite=True)

    print("下载成功!")
  1. 创建目录
def hdfs_mkdir(user,mkdir_name):
    # mkdir = input("请输入你需要创建的文件夹(英文):")
    login.hdfs_client.makedirs("/user_data/%s/%s"%(user,mkdir_name))
    print("文件夹创建成功!")
  1. 删除文件
def delete_file(user):
    file_name = input("请输入需要删除的文件:")
    path_hdfs = "/user_data/%s/%s" % (user, file_name)
    login.hdfs_client.delete(path_hdfs, recursive=False)

    print("删除成功!")
  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值