docker搭建hadoop和hive集群

news2024/11/15 18:34:10

一、安装docker并生成相关的镜像

(1)安装docker

安装docker教程

https://www.runoob.com/docker/centos-docker-install.html

只要在终端输入:

sudo docker run hello-world

后出现如下图的内容就证明安装docker成功了

(2)拉取CentOS镜像(Ubuntu镜像也行)

在终端输入:

sudo docker pull centos

在终端输入:sudo docker images,可以看到刚刚拉取的两个镜像

每次执行docker语句都要在前面加sudo,比较麻烦,直接将hadoop用户加入docker用户组,就不用再输入sudo了。

sudo gpasswd -a $USER docker     #将当前用户加入到docker用户组中
newgrp docker     #重新加载docker用户组

一般安装时会自动创建docker用户组,如果docker用户组不存在的话,在终端输入:

sudo groupadd docker     #创建docker用户组

注意,此时只有执行上述两条命令行的终端可以不用输入sudo,其他终端仍要输入,得重启虚拟机后所有终端才不用输入sudo。

(3)通过build Dockfile生成带ssh功能的centos镜像

先创建Dockfile文件,在终端输入:

vi Dockerfile

在Dockfile文件中添加以下内容:

FROM centos
MAINTAINER hadoop
 
RUN cd /etc/yum.repos.d/
RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
RUN yum makecache
RUN yum update -y
RUN yum install -y openssh-server sudo
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config
RUN yum install -y openssh-clients
 
RUN echo "root:a123456" | chpasswd
RUN echo "root   ALL=(ALL)       ALL" >> /etc/sudoers
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
 
RUN mkdir /var/run/sshd
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

Dockfile文件的内容解释:基于centos镜像,生成带有spenssh-server、openssh-clients的镜像,用户为root,密码为a123456,镜像维护者(作者)为hadoop。为了防止出现Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist

错误,我更改了yum下载依赖的镜像baseurl。注意:如果拉取的镜像是Ubuntu的话,得修改下载spenssh-server、openssh-clients的命令行。

你可能需要修改的地方:

1、MAINTAINER hadoop

MAINTAINER+空格+作者的信息,用于指定镜像作者的信息,我的用户名是hadoop,改成你自己的

2、root:a123456

设置镜像的密码,改成你自己的

建好Dockerfile文件后,生成镜像,在终端输入:

docker build -t="centos7-ssh" .

查看生成的centos7-ssh镜像,在终端输入:

docker images

(4)将下载的文件上传虚拟机

没有Xftp和Xshell的同学可以用VMwareTools替代,只要把压缩包添加到虚拟机主机上即可。安装VMwareTools后,复制本地主机的文件粘贴到虚拟机主机指定目录下。

1、用Xshell和Xftp连接虚拟机主机

Xshell(测试是否能正常连接,其实只需要用Xftp传输文件):

用户名填hadoop(换成你自己的),root可能会登不上,如果ssh运行状态没问题,还连接不上的话,可能是防火墙没关。

Xftp:

将压缩包上传到/home/hadoop(有Dockerfile的目录),如果上传失败,可能是目录没有传输文件的权限,在终端输入:

chmod 777 /home/hadoop/

2、解压文件(把目录和文件名改成你自己的)

在终端输入:

tar -zxvf /home/hadoop/hadoop-3.1.3.tar.gz -C /home/hadoop/ico
tar -zxvf /home/hadoop/jdk-8u212-linux-x64.tar.gz -C /home/hadoop/ico

(5)生成带有ssh、hadoop和jdk环境的CentOS镜像

移除原有的Dockerfile文件,在终端输入:

mv Dockerfile Dockerfile.bak

再重新创建一个Dockerfile文件,在终端输入:

vi Dockerfile

或者直接在Xftp上用记事本编辑原来的Dockerfile文件,更加方便(推荐)

将下面内容填入Dockerfile文件(记得保存)

FROM centos7-ssh
 
COPY jdk1.8.0_212 /usr/local/jdk
ENV JAVA_HOME /usr/local/jdk
ENV PATH $JAVA_HOME/bin:$PATH
 
COPY hadoop-3.1.3 /usr/local/hadoop
ENV HADOOP_HOME /usr/local/hadoop
ENV PATH $HADOOP_HOME/bin:$PATH

构建Dockerfile,在终端输入:

docker build -t="hadoop" .

成功生成名字为hadoop的镜像。

三、创建网桥,并启动docker容器

因为集群的服务器之间需要通信,而且每次虚拟机给集群分配的ip地址都不一样,所以需要创建网桥,给每台服务器分配固定的ip映射,这样就可以通过使用服务器名进行通信了,而且ip地址也不会变动。

(1)创建网桥

在终端输入:

  docker network create hadoop

(2)查看网桥

在终端输入:

docker network ls

其他三个网桥是安装docker时自带的,hadoop是刚刚创建的。

(3)启动三个容器并指定网桥

依次在终端执行下面三条命令行:

docker run -itd --network hadoop --name hadoop1 -p 50070:50070 -p 8088:8088 hadoop
docker run -itd --network hadoop --name hadoop2 hadoop
docker run -itd --network hadoop --name hadoop3 hadoop

参数解释:

-itd:在后台运行交互式容器

--network:指定网桥

--name:指定生成的容器名

-p:指定端口映射,主机端口号:容器端口号,第一个是hdfs服务,第二个是yarn 服务

末尾的hadoop是运行的镜像名

查看生成的容器,在终端输入:

docker ps -a

查看网桥使用情况,在终端输入:

docker network inspect hadoop

记录每台服务器的ip地址,后面要用,每个人的可能不一样,换成你自己的

172.18.0.2 hadoop1
172.18.0.3 hadoop2
172.18.0.4 hadoop3

四、登录容器,配置ip地址映射和ssh免密登录

(1)登录容器(Hadoop服务器)

开启三个终端,在每个终端分别输入:

docker exec -it hadoop1 bash
docker exec -it hadoop2 bash
docker exec -it hadoop3 bash

(2)在每个hadoop服务器中配置ip地址映射

在每台hadoop服务器的终端输入:

vi /etc/hosts

然后填入刚刚记录的ip地址

每台Hadoop服务器都配置好后,可以互相ping一下(ctrl + c停止ping),看看是否配置成功。hadoop1 ping hadoop2 如下图所示:

(3)在每台hadoop服务器中配置ssh免密登录

在每台hadoop服务器终端输入:

ssh-keygen

然后一直回车即可,再在每台hadoop服务器终端中输入:

ssh-copy-id -i /root/.ssh/id_rsa -p 22 root@hadoop1

填yes后,输入第二(3)步时设置的密码,123456

ssh-copy-id -i /root/.ssh/id_rsa -p 22 root@hadoop2

填yes后,输入第二(3)步时设置的密码,123456

ssh-copy-id -i /root/.ssh/id_rsa -p 22 root@hadoop3

填yes后,输入第二(3)步时设置的密码,123456

(4)测试是否成功配置ssh免密登录

ssh + hadoop服务器名:

ssh hadoop1
ssh hadoop2
ssh hadoop3

五、修改Hadoop配置文件

在hadoop1中,进入Hadoop配置目录,我的是:/usr/local/hadoop/etc/hadoop,查看目录下的文件,不同版本的Hadoop可能文件数量和名字会不同,在终端输入:

ls

(1)创建文件夹,配置时要用

mkdir /home/hadoop
mkdir /home/hadoop/tmp /home/hadoop/hdfs_name /home/hadoop/hdfs_data

(2)编辑hadoop_env.sh

修改下面三个参数,按照你自己的改

(3)编辑core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop1:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/home/hadoop/tmp</value>
    </property>
    <property>
        <name>io.file.buffer.size</name>
        <value>131702</value>
    </property>
</configuration>

(4)编辑mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.address</name>
        <value>hadoop1:10020</value>
    </property>
    <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>hadoop1:19888</value>
    </property>
</configuration>

(5)编辑hdfs-site.xml

<configuration>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/home/hadoop/hdfs_name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/home/hadoop/hdfs_data</value>
    </property>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop1:9001</value>
    </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop2:9002</value>
    </property>
    <property>
        <name>dfs.webhdfs.enabled</name>
        <value>true</value>
    </property>
</configuration>

Hadoop的Web UI界面访问地址:1、namenode:hadoop1:9001(会自动跳转到9000端口,如果直接访问9000端口号可能会访问异常)2、secondarynamenode:hadoop2:9002

(6)编辑yarn-site.xml

<configuration>
 
<!-- Site specific YARN configuration properties -->
 <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
        <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    <property>
        <name>yarn.resourcemanager.address</name>
        <value>hadoop1:8032</value>
    </property>
    <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>hadoop1:8030</value>
    </property>
    <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>hadoop1:8031</value>
    </property>
    <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>hadoop1:8033</value>
    </property>
    <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>hadoop1:8088</value>
    </property>
</configuration>

(7)编辑workers

把原先的默认值localhost删除

hadoop2
hadoop3

(8)配置环境变量

在终端输入:

vi /etc/profile

在文件尾部添加配置

export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
export HADOOP_HOME=/usr/local/hadoop
export PATH=$HADOOP_HOME/bin:$PATH
export PATH=$HADOOP_HOME/sbin:$PATH
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

保存退出后,再输入下面的命令行使配置生效:

source /etc/profile

(9)把文件拷贝到hadoop2和hadoop3上

依次执行以下命令:

scp -r $HADOOP_HOME/ hadoop2:/usr/local/
scp -r $HADOOP_HOME/ hadoop3:/usr/local/
scp -r /home/hadoop hadoop2:/
scp -r /home/hadoop hadoop3:/
scp -r /etc/profile hadoop2:/
scp -r /etc/profile hadoop3:/

(10)给文件赋权

在每台hadoop服务器的终端执行下面两条命令行:

chmod -R 777 /usr/local/hadoop
chmod -R 777 /usr/local/jdk

六、启动Hadoop集

(1)在hadoop1上执行以下命令:

1、格式化hdfs

hdfs namenode -format

2、一键启动Hadoop集群

start-all.sh

(2)测试Hadoop集群

每台服务器都输入:

jps

hadoop1:

hadoop2:

hadoop3:

hadoop1是名称结点,hadoop2是第二名称节点和数据节点,hadoop3是数据节点。网上很多人把名称节点和第二名称节点配置在同一台服务器上,我觉得这样配置是错的,这样配置根本发挥不了第二名称节点的作用:作为名称节点的检查点,定期合并日志和镜像。

(3)访问hadoop集群

http://192.168.175.131:8088/cluster

七、安装Hive

  1. 拷贝下载的Hive到docker容器中:

# 拷贝Hive安装包进 h01容器
docker cp /Users/luochao7/Downloads/apache-hive-3.1.2-bin.tar.gz 5fa8d538d8ae:/usr/local

# 进入容器
docker exec -it 5fa8d538d8ae bash
cd /usr/local/

# 解压安装包
tar xvf apache-hive-3.1.2-bin.tar.gz

#文件夹更名
root@h01:/usr/local# mv apache-hive-3.1.2-bin hive

#拷贝Mysql jdbc驱动到hive安装包 lib目录下(我的Mysql是8.0.26的)
docker cp /Users/luochao7/.m2/repository/mysql/mysql-connector-java/8.0.26/mysql-connector-java-8.0.26.jar 5fa8d538d8ae:/usr/local/hive/lib

八、配置Hive

  1.修改Hadoop中的 core-site.xml,并且 Hadoop集群同步配置文件,重启生效

<property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
</property>

  因为Hive需要把数据存储在 HDFS上,并且通过 MapReduce作为执行引擎处理数据

  2.修改配置文件

#slf4j这个包hadoop及hive两边只能有一个,这里删掉hive这边
root@Master:/usr/local/hive/lib# rm log4j-slf4j-impl-2.10.0.jar

#guava这个包hadoop及hive两边只删掉版本低的那个,把版本高的复制过去,这里删掉hive,复制hadoop的过去(注意看路径)
root@h01:/usr/local/hadoop/share/hadoop/common/lib# cp guava-27.0-jre.jar /usr/local/hive/lib/
root@h01:/usr/local/hive/lib# rm -rf guava-19.0.jar

#修改hive环境变量文件 添加Hadoop_HOME
root@h01:/usr/local/hive/conf# mv hive-env.sh.template hive-env.sh
root@h01:/usr/local/hive/conf# vim hive-env.sh

#在最后一行添加
export HADOOP_HOME=/usr/local/hadoop
export HIVE_CONF_DIR=/usr/local/hive/conf
export HIVE_AUX_JARS_PATH=/usr/local/hive/lib

#新增hive-site.xml 配置mysql等相关信息
root@h01:/usr/local/hive/conf# vim hive-site.xml

#粘贴配置
<configuration>
    <!-- 存储元数据mysql相关配置 -->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value> jdbc:mysql://172.17.0.2:3306/hive?createDatabaseIfNotExist=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <!--mysql用户名-->
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>
    <!--mysql密码-->
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>123456</value>
    </property>
    <!-- H2S运行绑定host -->
    <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>hadoop1</value>
    </property>
    <!-- 远程模式部署metastore 服务地址 -->
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://hadoop1:9083</value>
    </property>
    <!-- 关闭元数据存储授权  -->
    <property>
        <name>hive.metastore.event.db.notification.api.auth</name>
        <value>false</value>
    </property>
    <!-- 关闭元数据存储版本的验证 -->
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>
</configuration>

3. 初始化元数据(先启动 mysql)

root@h01:/usr/local/hive# bin/schematool -initSchema -dbType mysql -verbos

九、启动Hive

(1)第一代客户端(deprecated 不推荐使用)

  1. 前台启动Metastore服务(不推荐):

root@h01:/usr/local/hive# bin/hive --service metastore

  启动后,窗口一直处于等待的状态:

            

  这个时候,这个窗口就不能干别的,使用 control + c 结束,所以,不推荐这种方式。

 2.后台启动Metastore服务(推荐):

#输入命令回车执行 再次回车 进程将挂起后台
root@h01:/usr/local/hive# nohup bin/hive --service metastore &

  注意末尾有一个 &符号,启动后,这个进程在后台运行:

            

  使用 jps 查看进程:

            

  可见,有一个 RunJar 在后台运行。

  3.启动 hive(先启动Hadoop集群)

root@h01:/usr/local/hive# bin/hive

  启动成功后,如下图所示,输入 show databases 可以查看hive的数据库:

            

(2)第二代客户端(推荐使用)

  Hive经过发展,推出了第二代客户端 beeline,但是 beeline客户端不是直接访问 metastore服务的,而是需要单独启动 hiveserver2服务。在Hive安装的服务器上,首先启动metastore服务,然后启动 hiveserver2服务.

  如下图所示:

            

  1. 后台启动Metastore服务(先启动Hadoop ,如果电脑资源比较小,可以只启动Master):

#输入命令回车执行 再次回车 进程将挂起后台

root@h01:/usr/local/hive# nohup bin/hive --service metastore &

  2. 后台启动 hiverserver2 服务:

root@h01:/usr/local/hive# nohup bin/hive --service hiveserver2 &

  注意启动 hiverserver2 服务之后,要等一会儿(等半分钟吧)再往下启动 beeline客户端,不然会报错:Could not open connection to the HS2 server

  3. 启动 beeline客户端:

root@h01:/usr/local/hive# bin/beeline

  4. 连接 hiverserver2 服务

beeline> ! connect jdbc:hive2://hadoop1:10000#输入密码,一般都是root访问,直接输入 root,密码不用输,直接回车
Enter username for jdbc:hive2://hadoop1:10000: root
Enter password for jdbc:hive2://hadoop1:10000:
Connected to: Apache Hive (version 3.1.2)

   截图如下:

            

  否则,不连接 hiveserver2 的话,直接 show databases 会显示:No current connection.

  5.测试是否能和Hadoop相连:(如果之前没有创建 itcast 数据库)

INFO  : Compiling command(queryId=root_20220324095900_739f115e-5f84-43f8-9eed-e07e95a84db4): createdatabase itcast
INFO  : Compiling command(queryId=root_20220324095924_3e08b7ab-605f-4951-9c90-f002288f0b63): use itcast
INFO  : Compiling command(queryId=root_20220324095930_85fb6058-0d15-4d99-8cc3-8d6ae761f0b0): show tables
0: jdbc:hive2://h01:10000>createtable t_user(id int, name varchar(255), age int);
0: jdbc:hive2://h01:10000>insertintotable t_user values(1,"zhangsan",20);

  如果能插入成功,就表示能正常连接到Hadoop,因为Hive的数据都是存在 HDFS上的,只是这个过程很慢,如下图:

            

  执行这一条 insert 语句,竟然花了 69秒,插入成功的话,使用:select * from t_user,显示如下:

            

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/193123.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

让HTTPS、SSH 共享端口的——工具SSLH

目录 安装 SSLH 配置 Apache 或 Nginx Web 服务器 配置 SSLH 测试 安装 SSLH sudo apt-get install sslh 配置 Apache 或 Nginx Web 服务器 编辑 Web 服务器&#xff08;nginx 或 apache&#xff09;配置文件并找到以下行&#xff1a; listen 443 ssl; 将其修改为&…

Uni-App 如何实现消息推送功能?

原文链接&#xff1a;Uni-App 如何实现消息推送功能&#xff1f; 前言 这里用的是uni-app自带的UniPush1.0&#xff08;个推服务&#xff09;&#xff0c;所以只针对UniPush1.0介绍实现步骤。 建议查阅的文章&#xff1a; UniPush 1.0 使用指南Unipush 常见问题 当然现在已…

Flink day01

Flink简介 Flink起源于Stratosphere项目&#xff0c;Stratosphere是在2010~2014年由3所地处柏林的大学和欧洲的一些其他的大学共同进行的研究项目&#xff0c;2014年4月Stratosphere的代码被复制并捐赠给了Apache软件基金会&#xff0c;参加这个孵化项目的初始成员是Stratosphe…

Flutter项目实战

1.Androidstudio 获取dart支持才会出现 下图&#xff0c;才可以单独运行 2.需要 flutter pub get 3.Android Studio 中使用 FlutterJsonBeanFactory 插件 注意点&#xff1a;需要保证该 Android Studio 窗口下是一个完整的Flutter项目&#xff08;窗口下有且仅有一个Flutter项目…

录音软件哪个好用?推荐3款亲测好用的录音软件

很多小伙伴不知道电脑如何录制声音&#xff1f;其实电脑录制声音很简单&#xff0c;借助一款好用录音软件&#xff0c;就可以轻松录制。那你知道录音软件哪个好用吗&#xff1f;小编平常的工作经常需要使用到录音软件。今天就给大家推荐3款亲测好用的录音软件&#xff0c;感兴趣…

k8s核心资源Service

1、介绍为一组pod&#xff08;一次部署&#xff09;统一暴露一个ip和端口&#xff0c;供外界访问。2、集群内对外统一暴露kubectl expose deploy <部署名> --port<对外暴露端口> --target-port<容器内部端口>kubectl expose deploy mynginx --port8000 --tar…

torch_geometric--Convolutional Layers

torch_geometric–Convolutional Layers 卷积层 MessagePassing 式中口口口表示可微的排列不变函数&#xff0c;例如: sum, mean, min, max 或者 mul 和 γΘ\gamma_{\Theta}γΘ​和ϕΘ\phi_{\Theta}ϕΘ​表示可微函数&#xff0c;例如 MLPs. 请参见这里的附带教程。 参数…

JDBC-BasicDAO

引入 之前的sql语句是固定的只能通过参数传入&#xff0c;要写那么多方法肯定不好弄 这就引出了DAO 这里是整个流程示意图 最下面开始说 就是mysql库的每一张表对应一个JavaBean 右边是我们获取和关闭连接的工具类 上面XXXDAO的意思是 每一个表&#xff0c;都有一个与之对应的D…

高压放大器在镓基液态金属微型马达驱动实验研究中的应用

实验名称&#xff1a;高压放大器在镓基液态金属微型马达驱动实验研究中的应用 研究方向&#xff1a;新型材料 测试目的&#xff1a; 微/纳马达虽然是一种以实际应用为基础的动力装置&#xff0c;但其在科学研究方面的价值也尤为重要。在微/纳米尺度下&#xff0c;它可以接受能量…

【测试如何学代码?】学习代码的最佳实践经验分享

为什么要写这篇&#xff1f; 经常在群里看到大家问&#xff1a;该选择哪门语言&#xff1f;哪门语言有钱途&#xff1f; 其实&#xff0c;不管哪门语言&#xff0c;只要深入学好了都不会差&#xff0c;当然&#xff0c;我们选择语言最好还是要和自己的技术方向及职业发展相匹配…

基于php的高校社团信息管理系统

摘 要社团是由高校用户依据兴趣爱好自愿组成&#xff0c;按照章程自主开展活动的用户组织。高校社团是实施素质教育的重要途径和有效方式&#xff0c;在加强校园文化建设、提高用户综合素质、引导用户适应社会、促进用户交流等方面发挥着重要作用&#xff0c;是新形势下有效凝聚…

Android studio:Could not find method compile() for arguments 问题解决及两种解决方法探讨延伸

Could not find method compile() for arguments 问题全称 Could not find method compile() for arguments [org.tensorflow:tensorflow-lite:] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler. 如图 解决方法1(简单) …

[数据结构基础]排序算法第四弹 -- 归并排序和计数排序

目录 一. 归并排序 1.1 归并排序的实现思想 1.2 归并排序的递归实现 1.2.1 归并排序递归实现的思想 1.2.2 归并排序递归实现的代码 1.3 归并排序的非递归实现 1.3.1 归并排序非递归实现的思想 1.3.2 归并排序非递归实现的代码 1.4 归并排序的时间复杂度分析 二. 计数排…

c++之模板【进阶版】

前言 对于泛型编程&#xff0c;学好模板这节内容是非常有必要的。在前面学习的STL中&#xff0c;由于模板的可重性和扩展性&#xff0c;几乎所有的代码都采用了模板类和模板函数的方式&#xff0c;这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。 模板初阶 …

Hugging face教程-使用速查表-快速入门

Hugging face笔记 course url&#xff1a;https://huggingface.co/course/chapter5/8?fwpt 函数详细情况&#xff1a;https://huggingface.co/docs/transformers/main_classes/pipelines#transformers.TokenClassificationPipeline 基础掌握transformers和datasets&#xf…

软件测试 利器 | AppCrawler 自动遍历测试工具实践(一)

本文为霍格沃兹测试学院学院学员课程学习笔记&#xff0c;系统学习交流文末加群。 AppCrawler 是由霍格沃兹测试学院校长思寒开源的一个项目,通过名字我们大概也能猜出个方向&#xff0c;Crawler 是爬虫的意思&#xff0c;App 的爬虫&#xff0c;遍历 App &#xff1a; 官方 G…

linux性能优化-中断

一、概念 中断其实是一种异步的事件处理机制&#xff0c;可以提高系统的并发处理能力。Linux将中断处理过程分成了两个阶段&#xff1a;上半部和下半部 &#xff08;1&#xff09;上半部用来快速处理中断&#xff0c;它在中断禁止模式下运行&#xff0c;主要处理跟硬件紧密相关…

云计算是什么

&#x1f4d2;博客主页&#xff1a; 微笑的段嘉许博客主页 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐留言&#x1f4dd; &#x1f4cc;本文由微笑的段嘉许原创&#xff01; &#x1f4c6;51CTO首发时间&#xff1a;&#x1f334;2023年2月1日&#x1f334; ✉…

gcc 简介

一、gcc简介gcc与g&#xff0c;当程序中出现using namespace std等带有c特性的语句时&#xff0c;如果用gcc编译时&#xff0c;必须显式地指明这个程序要用c编译库编译&#xff0c;而g可以直接编译。二、gcc支持的文件.c&#xff0c;c语言的源程序.C, c的源程序.cc&#xff0c;…

数据结构——堆的介绍以及应用

前言&#xff1a;对于数据结构而言&#xff0c;大多存在着对应的物理结构和逻辑结构&#xff0c;而我们一开始介绍的顺序表&#xff0c;链表&#xff0c;栈&#xff0c;队列等的物理结构和逻辑结构还是比较类似的。今天要介绍的堆则有所不同&#xff0c;其物理结构是数组&#…