Hbase应用和Json文件
常用的Hbase shell命令
help - 显示可用的 HBase shell 命令列表。
create - 创建一个新表。
list - 列出 HBase 中的所有表。
put - 向表中插入数据。
get - 从表中检索数据。
scan - 扫描并检索表中的多行数据。
delete - 从表中删除数据。
disable - 禁用一个表。
enable - 启用一个表。
describe - 描述表的结构。
count - 计算表中的行数。
truncate - 截断表,删除所有数据但保留表结构。
(1)建表操作
create '<table_name>', '<column_family1>', '<column_family2>', ...
table_name是表名
后面column_family是表中的列族
create 'student', 'info', 'grades'
(2)插入记录
put 'table_name', 'row_key', 'column_family:column', 'value'
table_name 是要插入数据的表名。
row_key 是要插入数据的行键,它唯一标识了表中的一行数据。
column_family 是列族名称。
column 是列名。
value 是要插入的值。
put 'student', '001', 'info:name', 'John'
put 'student', '001', 'info:age', '25'
put 'student', '001', 'grades:math', '90'
以上示例向名为 student 的表中插入了一行数据。行键为 001,在 info 列族中插入了 name 和 age 列,并在 grades 列族中插入了 math 列。
(3)浏览/检索表
get 'table_name', 'row_key'
table_name 是要查询数据的表名。
row_key 是要查询数据的行键,它唯一标识了表中的一行数据。
get 'student', '001'
终端打印的结果大概为:
COLUMN CELL
personal:name timestamp=1646301037000, value=John
personal:age timestamp=1646301037000, value=25
contact:email timestamp=1646301037000, value=john@example.com
contact:phone timestamp=1646301037000, value=1234567890
1 row(s)
Took 0.356seconds
结构
列族:列 时间戳=********,值=*******
(4)Hbase删除或更新或插入与关系数据库有何不同
*这里需要写的和李老师想的一致,否则写的再对也没分
以下答案,仅供参考
Hbase 面向列
关系数据库 面向行
删除数据:在关系数据库中,删除数据通常是通过执行 DELETE 语句来完成,将满足特定条件的行从表中删除。而在 HBase 中,删除数据是基于行键(Row Key)进行的。你可以使用 delete 命令指定要删除的行键,并删除该行及其所有列族中的数据。
更新数据:在关系数据库中,更新数据是通过执行 UPDATE 语句来修改行中的某些列的值。而在 HBase 中,更新数据也是基于行键进行的。你可以使用 put 命令指定要更新的行键,并提供新的列值来覆盖旧的值。HBase 会将新的列值插入或更新到相应的列族中。
插入数据:在关系数据库中,插入数据是通过执行 INSERT 语句来将新的行插入到表中。而在 HBase 中,插入数据也是基于行键进行的。你可以使用 put 命令指定要插入的行键,并提供相应的列值来插入新的数据行。
需要注意的是,HBase 是一个分布式、面向列的存储系统,其底层的数据存储方式和操作方式与传统关系数据库略有不同。在 HBase 中,数据以行键为索引进行存储,每一行可以包含多个列族和列。通过指定行键,你可以直接操作某一行的数据,并进行删除、更新和插入操作。
(5)分布式计算spark具体运用
0.json文件的内容
{“name”: "sunjin" }
{"name": “sunjin1” , "age":30 }
{"name": “sunjin2” , "age":19}
1.利用JSON文件创建DataFrame
其中df是一个DataFrame对象
from pyspark.sql import SparkSession
# 创建SparkSession
spark = SparkSession.builder.getOrCreate()
# 指定JSON文件的路径
path = "/path/to/your/file.json"
# 读取JSON文件并创建DataFrame
df = spark.read.format('json').load(path)
# 显示DataFrame的内容
df.show()
2.画json文件的逻辑结构
+----+------+-----+
| ID | Name | Age |
+----+------+-----+
| 1 | John | 25 |
| 2 | Mary | 30 |
| 3 | Alex | 28 |
+----+------+-----+
3.spark创建临时视图并执行查询操作
创建临时视图 以供查询
df.createTempView("table_name")
df.createOrReplaceTempView("table_name")
查询
spark.sql("SELECT * FROM table_name")
4.DataFrame执行查询
可以用以下命令来选择指定的列并显示结果
老师上课给的,但是我没查到这个命令 ↓
df.select("df("name")").show()
df.select("name").show()
df.select("name", "age").show()
容器镜像K8S
1.Dockerfile文件中的常出现的字段
FROM:指定基础镜像,例如 FROM ubuntu:latest 表示使用最新版的 Ubuntu 作为基础镜像。
RUN:用于在镜像中执行命令,例如 RUN apt-get update && apt-get install -y python3 表示在镜像中执行更新和安装 Python3 的命令。
COPY:将本地文件复制到镜像中,例如 COPY app.py /app/ 表示将本地的 app.py 文件复制到镜像中的 /app/ 目录。
ADD:类似于 COPY,但 ADD 还支持从 URL 下载文件并复制到镜像中。
WORKDIR:设置工作目录,即在容器中执行命令时的默认路径,例如 WORKDIR /app/ 表示将 /app/ 目录设置为默认工作目录。
ENV:设置环境变量,例如 ENV PATH=/usr/local/bin:$PATH 表示将 /usr/local/bin 添加到环境变量 PATH 中。
EXPOSE:指定容器运行时需要暴露的端口,例如 EXPOSE 8080 表示将容器的端口 8080 暴露出来。
CMD:设置容器启动时要执行的命令,可以有多个 CMD 指令,但只有最后一个 CMD 指令生效。
ENTRYPOINT:类似于 CMD,但 ENTRYPOINT 指定的命令不会被覆盖,用于定义容器启动时的入口点。
MAIN TAINER :维护者的信息,但是在高版本中已经被废弃了
下面给出一个chatgpt示例:
# 指定基础镜像
FROM ubuntu:latest
# 设置工作目录
WORKDIR /app
# 复制文件到容器中
COPY . /app
# 运行命令
RUN apt-get update && \
apt-get install -y python3
# 设置环境变量
ENV LANG=C.UTF-8
# 暴露容器的端口
EXPOSE 8080
# 定义镜像维护者信息
LABEL maintainer="your-name <your-email@example.com>"
# 容器启动时要执行的命令
CMD ["python3", "app.py"]
配置容器,使其可执行化
ENTRY POINT ["java","jar","........jar"]
李老师上课给的例子,参考这个就行
FROM ubuntu 指定基础镜像
MAIN TAINER sunjin 维护者信息
RUN mkdir _path 构建镜像时执行的命令
RUN ["/etc/execfile","arg1","arg2"]
ADD home* /mydir/ 添加到容器中 tar文件自动解压
COPY 类似ADD,但不会自动解压文件和访问网络资源
CMD echo "This is a test." 容器在启动后执行的命令
ENTRY POINT["java","jar","people.jar"] 配置容器,使其可执行化
实例1:
FROM ubuntu
ENTRY POINT["top","-6"]
CMD ["-C"]
实例2:
ENTRY POINT ["java,"jar,"peole.jar]
2.根据dockerfile文件制作镜像
docker build -t 镜像名 .
其中 .是dockerfile文件的路径
3.容器以后台方式运行并把容器8080映射到主机8080
docker run -d -p 8080:8080 镜像名
更多docker命令请查看
docker详解
K8S中部署镜像
1.创建一个部署,并使用某个镜像运行该容器
kubectl create deployment 部署名 --image=镜像名
kubectl create deployment my-deployment --image=my-image:latest
2.暴露应用
将Deployment暴露为 service
部署名要和上一问的部署名一致
kubectl expose deployment 部署名 --port=80 --type=NodePort
kubectl expose deployment my-deployment --port=80 --type=NodePort
3.查询外界访问端口
获取当前集群中所有的服务信息
kubectl get service
云计算资源管理
1.Mesos集群规划
主机名 IP Mesos守护进程 Yarn守护进程 HDFS守护进程
master Master Resouremanager SecondaryNameNode NameNode
slave1 slave Nodemanager DataNode
slave2 slave Nodemanager DataNode
2.Openstack 集群部署
Answer.txt 设置 [general]
下面是一个例子
Answer.txt:
[general]
HOSTNAME=controller
CONTROLLER_PUBLIC_IP=192.168.0.100
ADMIN_PASSWORD=openstack
TIMEZONE=UTC
LANGUAGE=en_US.UTF-8
自建一个JSON文件
JSON文件的结构
这是一个示例,其中 hobbies是一个数组,所以后面是 [
address是一个嵌套的对象,所以后面是 {
{
"name": "John Smith",
"age": 30,
"city": "New York",
"isStudent": false,
"hobbies": ["reading", "traveling", "playing music"],
"address": {
"street": "123 Main St",
"city": "New York",
"state": "NY",
"zipcode": "10001"
}
}
自定义一个 JSON文件
Student ={
"Base":{
"ID":20202207033, “Name”:“sunjin”
}
“Grade”:{
“Math”:90
"English":80
“Chinese”:100
}
}