HBase的安装配置

  • 实验目的

掌握HBase安装、HBase Shell命令和HBase Java API编程。

  • 实验内容
  1. 掌握HBase安装配置方法
  2. 掌握HBase Shel命令使用方法;
  3. 掌握HBase Java API的基本用法。

    

  • 实验步骤

  在集群节点中输入HBase Shell命令行完成数据表管理和数据增删查改等操作,具体完成以下操作:

1. 创建一个Student表,包含Base和Score两个列族;Base列族包含Number、Name、Sex、Prof列;Score列族包含English、Math、Market、Java、Python、BigData列

2.往表中新增数据,每行rowkey设置为学生学号

Number Name Sex Prof English Math Market Java Python BigData

    001 Tim m bigdata 50 72 85 75 80

002 Lucy f bigdata 78 68 58 80 76

003 Vivian f biz 82 70 70

004 Golden m biz 80 57 68

3.获取列键001的数学成绩;

4.删除一行数据。

5.获取学号范围从001~003的学生的基本信息(列族为Base)

6.搜索所有bigdata专业的学生

7.使用scan命令的filter搜索所有不及格的成绩记录

*命令用法参考课程PPT或网上资源

下载并通过Xshell传输文件:

传输zookeeper:

传输hbase:

修改系统变量:

修改regionesrvers:

此时Xshell出了点问题连接不上了,于是转到虚拟机解压:

在这里启动失败了:

这里stop-hbase.sh后依然有进程未关闭:

通过hbase-daemon.sh stop regionserver RegionServer命令关闭

也可通过sudo kill -9 进程号一个一个关闭,但是没必要

这里通过sudo kill -9 进程号关闭

 

在这里重新配置了一下pids:

此处运行成功:

启动hbase shell:

创建一个Student表,包含Base和Score两个列族;Base列族包含Number、Name、Sex、Prof列;Score列族包含English、Math、Market、Java、Python、BigData列

create 'Student', {NAME => 'Base'}, {NAME => 'Score'}

往表中新增数据,每行rowkey设置为学生学号

put 'Student', '001', 'Base:Number', '001'

put 'Student', '001', 'Base:Name', 'Tim'

put 'Student', '001', 'Base:Sex', 'm'

put 'Student', '001', 'Base:Prof', 'bigdata'

put 'Student', '001', 'Score:English', '50'

put 'Student', '001', 'Score:Math', '72'

put 'Student', '001', 'Score:Market', ''

put 'Student', '001', 'Score:Java', '85'

put 'Student', '001', 'Score:Python', '75'

put 'Student', '001', 'Score:BigData', '80'

put 'Student', '002', 'Base:Number', '002'

put 'Student', '002', 'Base:Name', 'Lucy'

put 'Student', '002', 'Base:Sex', 'f'

put 'Student', '002', 'Base:Prof', 'bigdata'

put 'Student', '002', 'Score:English', '78'

put 'Student', '002', 'Score:Math', '68'

put 'Student', '002', 'Score:Market', ''

put 'Student', '002', 'Score:Java', '58'

put 'Student', '002', 'Score:Python', '80'

put 'Student', '002', 'Score:BigData', '76'

put 'Student', '003', 'Base:Number', '003'

put 'Student', '003', 'Base:Name', 'Vivian'

put 'Student', '003', 'Base:Sex', 'f'

put 'Student', '003', 'Base:Prof', 'biz'

put 'Student', '003', 'Score:English', '82'

put 'Student', '003', 'Score:Math', '70'

put 'Student', '003', 'Score:Market', '70'

put 'Student', '004', 'Base:Number', '004'

put 'Student', '004', 'Base:Name', 'Golden'

put 'Student', '004', 'Base:Sex', 'm'

put 'Student', '004', 'Base:Prof', 'biz'

put 'Student', '004', 'Score:English', '80'

put 'Student', '004', 'Score:Math', '57'

put 'Student', '004', 'Score:Market', '68'

获取列键001的数学成绩

get 'Student', '001', {COLUMN => 'Score:Math'}

删除一行数据

deleteall 'Student', '004'

删除成功:

获取学号范围从001~003的学生的基本信息(列族为Base)

 scan 'Student', {STARTROW => '001', ENDROW => '004', COLUMNS => ['Base:Number', 'Base:Name', 'Base:Sex', 'Base:Prof']}

搜索所有bigdata专业的学生

scan 'Student', {FILTER => "SingleColumnValueFilter('Base', 'Prof', =, 'binary:bigdata')"}

使用scan命令的filter搜索所有不及格的成绩记录,

scan 'Student', {FILTER => "ValueFilter(<=, 'binary:60') AND ValueFilter(!=, 'binary:')", COLUMNS => 'Score'}

关闭hbase:

实验体会

本次实验出现无法自动关闭HRegionServer的问题,以及Hmaster时有时没有的问题。这2个问题中第一个我可以用手动关闭来停止HRegionServer,Hmaster时有时没有的问题我通过学习群“报春花”大佬的解答解决了Hmaster的问题。

本次实验难点在于配置zookeeper与hbase,其操作并不难。但是在hbase shell中输入命令时依然错误了不少次。如下图:

还有一个问题:

结束所有进程之后多了2个Main,哎,就这样吧。

通过本次实验我更加熟悉hbase的操作与应用。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我可以为您提供一个基于MySQL和Python的学生成绩管理系统。系统包括以下功能: 1. 学生信息管理:包括学生的基本信息,如姓名、班级、学号等。 2. 课程信息管理:包括课程名称、教师姓名、学分等。 3. 成绩管理:包括学生在不同课程中的成绩,可以添加、修改、删除成绩。 4. 统计分析:可以按照班级、课程等维度进行成绩分析,如班级平均成绩、课程平均成绩等。 下面是代码实现和开发文档。 1. 数据库设计 在MySQL中创建一个名为“student”的数据库,包含三张表:学生表(student)、课程表(course)、成绩表(score)。 学生表(student)包含字段:学号(id)、姓名(name)、班级(class)。 课程表(course)包含字段:课程编号(id)、课程名称(name)、学分(credit)、教师姓名(teacher)。 成绩表(score)包含字段:学号(student_id)、课程编号(course_id)、成绩(score)。 2. Python代码实现 使用Python连接MySQL数据库,使用SQLAlchemy库进行ORM开发,实现学生成绩管理系统。 ```python from sqlalchemy import create_engine, Column, Integer, String, Float, ForeignKey from sqlalchemy.orm import sessionmaker, relationship from sqlalchemy.ext.declarative import declarative_base # 连接数据库 engine = create_engine('mysql+pymysql://root:123456@localhost/student') Session = sessionmaker(bind=engine) Base = declarative_base() # 学生表 class Student(Base): __tablename__ = 'student' id = Column(Integer, primary_key=True, autoincrement=True) name = Column(String(20), nullable=False) class = Column(String(20), nullable=False) scores = relationship('Score', backref='student') # 课程表 class Course(Base): __tablename__ = 'course' id = Column(Integer, primary_key=True, autoincrement=True) name = Column(String(20), nullable=False) credit = Column(Float, nullable=False) teacher = Column(String(20), nullable=False) scores = relationship('Score', backref='course') # 成绩表 class Score(Base): __tablename__ = 'score' student_id = Column(Integer, ForeignKey('student.id'), primary_key=True) course_id = Column(Integer, ForeignKey('course.id'), primary_key=True) score = Column(Float, nullable=False) # 初始化数据库 def init(): Base.metadata.create_all(engine) # 添加学生 def add_student(name, class): session = Session() s = Student(name=name, class=class) session.add(s) session.commit() # 添加课程 def add_course(name, credit, teacher): session = Session() c = Course(name=name, credit=credit, teacher=teacher) session.add(c) session.commit() # 添加成绩 def add_score(student_id, course_id, score): session = Session() s = Score(student_id=student_id, course_id=course_id, score=score) session.add(s) session.commit() # 删除学生 def delete_student(id): session = Session() s = session.query(Student).filter(Student.id == id).first() session.delete(s) session.commit() # 删除课程 def delete_course(id): session = Session() c = session.query(Course).filter(Course.id == id).first() session.delete(c) session.commit() # 删除成绩 def delete_score(student_id, course_id): session = Session() s = session.query(Score).filter(Score.student_id == student_id, Score.course_id == course_id).first() session.delete(s) session.commit() # 修改成绩 def update_score(student_id, course_id, score): session = Session() s = session.query(Score).filter(Score.student_id == student_id, Score.course_id == course_id).first() s.score = score session.commit() # 查询学生 def query_student(id): session = Session() s = session.query(Student).filter(Student.id == id).first() print('id:{} name:{} class:{}'.format(s.id, s.name, s.class)) # 查询课程 def query_course(id): session = Session() c = session.query(Course).filter(Course.id == id).first() print('id:{} name:{} credit:{} teacher:{}'.format(c.id, c.name, c.credit, c.teacher)) # 查询成绩 def query_score(student_id, course_id): session = Session() s = session.query(Score).filter(Score.student_id == student_id, Score.course_id == course_id).first() print('student_id:{} course_id:{} score:{}'.format(s.student_id, s.course_id, s.score)) # 统计分析 def statistics(): session = Session() # 班级平均成绩 avg_class_score = session.query(Student.class, Score.score).join(Score).group_by(Student.class).\ with_entities(Student.class, func.avg(Score.score)).all() print('班级平均成绩:', avg_class_score) # 课程平均成绩 avg_course_score = session.query(Course.name, Score.score).join(Score).group_by(Course.name).\ with_entities(Course.name, func.avg(Score.score)).all() print('课程平均成绩:', avg_course_score) if __name__ == '__main__': init() add_student('张三', '一班') add_student('李四', '二班') add_course('语文', 4.0, '张老师') add_course('数学', 4.0, '李老师') add_score(1, 1, 90) add_score(1, 2, 80) add_score(2, 1, 85) add_score(2, 2, 95) query_student(1) query_course(1) query_score(1, 1) delete_student(1) delete_course(1) delete_score(2, 2) update_score(2, 1, 90) statistics() ``` 3. 开发文档 开发文档包括以下内容: 1. 项目概述:学生成绩管理系统是一个基于MySQL和Python的管理系统,可以方便地管理学生的基本信息、课程信息和成绩信息。 2. 功能模块:包括学生信息管理、课程信息管理、成绩管理和统计分析。 3. 技术选型:使用MySQL作为数据库,使用Python进行开发,使用SQLAlchemy库进行ORM开发。 4. 数据库设计:创建一个名为“student”的数据库,包含三张表:学生表(student)、课程表(course)、成绩表(score)。 5. 详细设计:详细描述了每个功能模块的实现方法,包括Python代码和SQL语句。 6. 测试计划:定义了测试用例和测试方法,保证系统的稳定性和可靠性。 7. 部署和维护:描述了如何部署和维护学生成绩管理系统,包括数据库备份和恢复、代码更新和维护等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值