【Hadoop】一、Hadoop入门:基础配置、集群配置、常用脚本
基础设置
网络设置
创建好一个 centos 虚拟机,修改网络配置文件:
/etc/sysconfig/network-scripts/ifcfg-ens33
修改 BOOTPROTO 为 static
以及添加 IPADDR、GATEWAY、DNS1
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="896ed56e-1848-44a7-98ed-244ebc978e1c"
DEVICE="ens33"
ONBOOT="yes"IPADDR=192.168.202.142
GATEWAY=192.168.202.1
DNS1=192.168.202.1
修改主机名称:
/etc/hostname
修改为 hadoop100
在主机名映射文件中添加映射
/etc/hosts
192.168.202.142 hadoop100
192.168.202.143 hadoop101
192.168.202.144 hadoop102
192.168.202.145 hadoop103
192.168.202.146 hadoop104
192.168.202.147 hadoop105
192.168.202.148 hadoop106
192.168.202.149 hadoop107
192.168.202.150 hadoop108
关闭防火墙
systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld.service
之后检查 ifconfgi 中 ens33 的ip、hostname、ping www.baidu.com 进行检查,都通过则证明网络配置成功
文件设置
配置用户 root 权限:
打开
/etc/sudoers
并在这个位置这样配:
root ALL=(ALL) ALL## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALLhadoop ALL=(ALL) NOPASSWD:ALL
之后我们在 hadoop 用户下面的 sudo 指令就会生效
切换到 opt 目录
sudo rm -rf rh
在 opt 目录下进行后续操作:
创建两个目录module 用于存放安装包、software 用与存放软件
sudo mkdir -p module
sudo mkdir -p software
现在我们创建的这两个文件是属于 root 的,所以我们要修改这两个目录的归属:
sudo chown hadoop:hadoop module
sudo chown hadoop:hadoop software
将这两个目录的归属全部改为 hadoop(自己的用户)
之后我们需要将自带的 jdk 删除:
rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
注意这句话的前半句话意思是找到所有文件名带有 java 的文件,后半句话是依次独立删除
注意这个操作必须在 root 的场景下进行
-
虚拟机克隆:注意克隆完整虚拟机
克隆三台虚拟机,之后修改其 网络配置文件中的 ip 地址和主机名
JDK与Hadoop的安装
hadoop下载地址:
https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/
将下载好的文件发送到虚拟机的 /opt/software 路径中
将 JDK 压缩包解压到 module 目录下,同时配置环境变量
环境变量位置的配置,我们的常用做法是在 /etc/profile 下进行配置,但是此处我们选择在 /etc/profile.d 目录下新建 .sh 文件的方式进行配置,这样也可以配置的原因是 /etc/profile 文件中声明了遍历 /etc/profile.d 目录中所有以 .sh 结尾的文件,将其所有的文件都遍历执行一遍
在 /etc/profile.d 目录中创建:
my_env.sh
#JAVA_ENV
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$JAVA_HOME/bin
之后还是需要进行 source 操作 就可以使用 java -version 看到 jdk 版本了
解压 Hadoop 到 module 目录,之后同样在 my_env.sh 上配置环境变量,注意 hadoop 的环境变量需要配置 /bin 和 /sbin
# BASE_PATH
export PATH=/bin:/usr/bin:$PATH#JAVA_ENV
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin# HADOOP
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
配置好 hadoop 之后,文件应该是上面这样
-
hadoop基础文件结构介绍
hadoop 文件中 bin 目录中存放hadoop中可执行的许多命令,例如:hdfs、yarn、mapred 等
etc/hadoop 目录中存放配置文件信息,关键的配置文件信息有:core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml
sbin 目录中存放的是 我们需要使用到的一些命令:例如 start-all.sh 这种
-
分布式介绍
本地分布式:仅用于测试,数据存储在本地
伪分布式:仅有一台服务器,假装是很多台服务器,数据存储在 HDFS
完全分布式:有很多服务器,数据分布式存储在多台服务器上,是标准的分布式
wordcount 案例测试:
随意新建一个 txt 里面补充一些单词
之后像下面这样执行就可以尝试进行一个大数据计算
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput wcoutput
后面的wcoutput 是输出文件夹,要求这个输出文件夹不存在,里面会生成两个文件,cat 其中一个文件就可以看到结果,另一个文件是成功或者失败的标识。
使用SCP 命令编写集群文件分发脚本
首先保证目录是创建好的
之后使用下面的命令将 102 中的文件传入 自己,自己传给别人,别人传给别人
scp -r /opt/module/jdk1.8.0_212/ hadoop@hadoop102:/opt/module
scp -r hadoop@hadoop102:/opt/module/jdk1.8.0_212 /opt/module
scp -r hadoop@hadoop102:/opt/module/hadoop-3.1.3 hadoop@hadoop104:/opt/module
但是如果我们不需要全部复制,而是需要同步文件内容,比如说有某个文件修改了,就可以使用同步命令进行修正:rsync…(注意:第一次同步等同于拷贝)具体用法和远程同步的方法和 scp 命令一致
rsync -av /from /to
但要注意 rsync 要求目的地和出发地不能都是远程连接
-
我们创建一个脚本(在 ~/bin 下创建),实现同步两台机器上的文件内容,致使文件内容的同步,同时实现配置环境变量以达到在任意位置都可以使用
#!/bin/bash# 检查是否至少有一个参数传递给脚本 if [ "$#" -lt 1 ]; thenecho "Not Enough Argument!"exit 1 # 通常使用非零值来表示异常退出 fi# 遍历所有集群中的机器 for host in hadoop102 hadoop103 hadoop104 doecho "=================== $host ==================="# 遍历所有目录,挨个发送for file in $@doif [ -e $file ]; then# 获取父目录pdir=$(cd -P $(dirname $file); pwd)# 获取当前文件名称fname=$(basename $file)ssh $host "mkdir -p $pdir"rsync -av $pdir/$fname $host:$pdirelseecho "$file does not exists"fidonedone
这个脚本这样子就实现了 xsync from 直接在另两台机器上的对应位置直接进行同步的操作】
接下来,就使用这个脚本来同步环境变量信息 /etc/profile.d/my-env.sh
sudo ./xsync /etc/profile.d/my_env.sh
之后就同步完成了
配置 ssh 免密登录
我们为三台机器实现免密登录
在家目录中键入下面的命令可以生成一个密钥对,这个密钥对存储在 .ssh 文件夹中,公钥为 id_rsa.pub 这个公钥是要发送到所有主机的(保存在 连接目的地主机的 authorized 文件中),id_rsa 则为私钥,私钥自己保存
ssh-keygen -t rsa
之后进行公钥的拷贝(注意自己也要拷贝):
ssh-copy-id hadoop102
ssh-copy-id hadoop103
ssh-copy-id hadoop104
对三台机器都这样进行操作,就可以实现三台机器的相互免密登录
注意,这里的免密登录是针对于 用户的,也就是说,这个登录在 root 上也需要再配置一遍
集群配置
集群结构:
Hadoop 集群结构:
- hadoop102:
- HDFS:NameNode、DataNode
- YARN:NodeManager
- hadoop103:
- HDFS:DataNode
- YARN:ResourceManager、NodeManager
- hadoop104:
- HDFS:SecondaryNameNode、DataNode
- YARN:NodeManager
配置 core-site.xml:
这里第一个是 hadoop 的对内数据传输暴露地址,第二个是hadoop数据文件的存储地址
<configuration><property><name>fs.defaultFS</name><value>hdfs://hadoop102:8020</value></property><property><name>hadoop.tmp.dir</name><value>/opt/module/hadoop-3.1.3/data</value></property>
</configuration>
配置 hdfs-site.xml:
这里的两个配置分别是 hadoop外部访问地址和secondarynamenode的地址:
<configuration><property><name>dfs.namenode.http-address</name><value>hadoop102:9870</value></property><property><name>dfs.namenode.secondary.http-address</name><value>hadoop104:9868</value></property>
</configuration>
配置 yarn-site.xml:
第一个是建议的配置、第二个是 resourcemanager的地址、第三个是环境变量白名单
<configuration><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.resourcemanager.hostname</name><value>hadoop103</value></property><property><name>yarn.nodemanager.env-whitelist</name><value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value></property>
</configuration>
配置 mapred-site.xml 令 mapreduce在yarn 上运行
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property>
</configuration>
之后进行分发:
xsync /opt/module/hadoop-3.1.3/etc/hadoop
workers的配置:只有配置了 workers,我们的启动命令才能够找到正确的服务器地址进行启动
/opt/module/hadoop-3.1.3/etc/hadoop/workers
hadoop102
hadoop103
hadoop104
之后进行分发
xsync workers
初始化,只有第一次启动需要初始化
hdfs namenode -format
初始化完毕后,hadoop-3.1.3 中会多出两个文件,分别是 data 和 logs
此时我们使用:
.../sbin/start-dfs.sh
就可以启动集群的hadoop服务了,这里启动之后只会启动 hadoop相关的服务:
NameNode、DataNode 和 SecondaryNameNode
此时还差 ResourceManager、NodeManager,这个需要我们在 103服务器中使用
.../sbin/start-yarn.sh
命令进行启动
此时我们可以打开两个页面,一个是 hdfs 的文件管理界面,另一个是yarn的资源调度界面:
hadoop102:9870
hadoop103:8088
集群基本测试
创建目录
hadoop fs -mkdir /wcinput
我们将 wordcount 上传
hadoop fs -put wcinput/test.txt /wcinput
之后,我们可以在前端展示界面找到我们的文件,这个文件的真实存储是存在于 hadoop的 data目录内的,其原路径是:/data/dfs/data/current/xxxxxx/current/finalized/subdir0/subdir0 小文件会存储在一块中,大文件会存储在多块中,我们可以使利用 cat xxx >> tmp.tar.gz 的方式来追加,从而实现拼接处源文件的效果,但这只是一个尝试,正常不会这么做。
注意,在默认情况下,我们上传上去的数据会被复制两份,共计三份存储在不同的服务器上
此时,我们运行一下 wordcount 程序尝试一下,注意这里的所有操作都是基于 HDFS 文件系统的
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /wcinput /output
此时程序正常运行
-
注意此处:若集群因为配置失败或操作不当删除导致集群无法启动
应先关闭集群:sbin/stop-dfs.sh、sbin/stop-yarn.sh
之后删除每个集群上的 data 和 logs 命令,然后初始化:hdfs namenode -format
之后再启动就可以了,但是这样会删除历史记录。
-
此时还有一个问题需要注意,就是此处执行的任务无法保存,无法在历史中查看,这是我们必要的功能,所以我们进一步进行配置:
我们 配置 mapred-site.xml 文件:
添加如下配置,上面是内部通信地址,下面是web页面展示地址
<property><name>mapreduce.jobhistory.address</name><value>hadoop102:10020</value></property><property><name>mapreduce.jobhistory.webapp.address</name><value>hadoop102:19888</value></property>
之后我们使用如下指令启动历史服务:
bin/mapred --daemon start historyserver
之后就可以通过 jps 看到启动了jobHistoryServer 服务
关闭指令:
bin/mapred --daemon stop historyserver
-
配置日志
在 yarn-site.xml 中进行日志功能的配置,注意日志需要集成在 jobhistory对应的端口,并且只需要保存七天
配置分别是:开启日志聚集、对应日志端口、保存时间
<property><name>yarn.log-aggregation-enable</name><value>true</value></property><property><name>yarn.log.server.url</name><value>http://hadoop102:19888/jobhistory/logs</value></property><property><name>yarn.log-aggregation.retain-seconds</name><value>604800</value></property>
之后记得分发重启就可以实现日志操作啦
-
对于Manager的服务:
yarn --daemon start/stop xxxxmanager
对于 node 的服务
hdfs --daemon start/stop xxx
这两个命令可以实现单个服务的启停
服务一键启停脚本和jps全部脚本
一键启停脚本(myhadoop.sh):
记得要添加权限以允许所有用户都执行脚本
chmod 777 myhadoop.sh
#!/bin/bashif [ $# -lt 1 ]
thenecho "No Args Input..."exit ;
ficase $1 in
"start")echo " ========== 启动 hadoop 集群 ========== "echo " ---------- 启动 hdfs ---------- "ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"echo " ---------- 启动 yarn ----------"ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"echo " ---------- 启动 historyserver ---------- "ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
;;
"stop")echo " ========== 关闭 hadoop 集群 ========== "echo " ---------- 关闭 historyserver ----------"ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"echo " ---------- 关闭 yarn ----------"ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"echo " ---------- 关闭 hdfs ---------- "ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)echo "Input Args Error..."
;;
esac
chmod 777 jpsall
jps集群脚本(jpsall):
#!/bin/bashfor host in hadoop102 hadoop103 hadoop104
doecho ========== $host =========ssh $host jps
done
同样,两个脚本都放在 ~/bin 中
如果需要的话,也可以使用 xsync 进行分发来让所有集群都使用到这两个脚本
其他问题
-
hadoop 常用端口号
HDFS Namenode 内部端口:8020/9000/9820
HDFS Namenode 对外暴露端口:9870
Yarn 查看任务运行情况端口:8088
历史服务器查看端口:19888
时间同步
使用 ntpd 服务实现时间同步功能
在 hadoop102 中进行时间服务的配置
systemctl status ntpd
systemctl start ntpd
systemctl is-enabled ntpd # 自启动情况
之后进行时间服务器配置的修改:
sudo vim /etc/ntp.conf
修改几项:
-
打开 restrict 192.168.xx.0 mask 255.255.255.0 nomodify notrap 的注释,这代表允许所有在 192.168.xx.0 网段的服务器访问自己
-
之后注释掉 server 0、server 1、server 2、server 3 这四行,这代表从互联网获取时间信息,若我们是公网服务器,则无需进行修改
-
在文件最末尾添加如下信息:
server 127.127.1.0 fudge 127.127.1.0 stratum 10
这段代码允许当丢失网络连接时依然使用本地服务器作为集群中心为其他节点提供时间同步
-
之后配置硬件时间信息:
在末尾添加
sudo vim /etc/sysconfig/ntpdSYNC_HWCLOCK=yes
-
之后我们先关闭所有节点上的 ntpd 服务并关闭其自启动,这是为了避免一会在配置的时候出现外网和内网交替同步的乱象
sudo systemctl stop ntpd sudo systemctl disable ntpd
-
在其他机器上配置时间同步机制:一分钟同步一次
sudo crontab -e
之后进行编写定时同步
在编辑crontab文件时,你可以添加新的计划任务或者修改现有的计划任务。每一行都代表一个计划任务,格式如下: 0 3 * * * /path/to/command*/1 * * * * /usr/sbin/ntpdate hadoop102
-
之后我们可以进行测试,输入 date 可以查看系统时间
sudo date -s "2015-6-5 11:11:15"
这样调整系统时间之后,我们过一分钟就会自动将时间同步
注意在修改完之后,这子服务器的 ntpd 是关闭的状态,时间服务器的 ntpd 是启用的状态
ENS33 消失的处理方式
systemctl stop NetworkManager #关闭NetworkManager
systemctl disable NetworkManager #开机禁用NetworkManager
systemctl start network.service #开启网卡
service network restart #重启网卡
添加用户展示页面的操作权限
在正常情况下,hdfs 页面只有展示查询权限,是没有修改和删除权限的,基于这种情况,我们可以在 core-site.xml 中添加配置来添加用户的查询权限:
<property><name>hadoop.http.staticuser.user</name><value>hadoop</value></property>
相关文章:

【Hadoop】一、Hadoop入门:基础配置、集群配置、常用脚本
基础设置 网络设置 创建好一个 centos 虚拟机,修改网络配置文件: /etc/sysconfig/network-scripts/ifcfg-ens33修改 BOOTPROTO 为 static 以及添加 IPADDR、GATEWAY、DNS1 TYPE"Ethernet" PROXY_METHOD"none" BROWSER_ONLY&quo…...

Ollama:本地运行大模型【含UI界面】
文章目录 Ollama 简介安装 ollamaWindows 安装Docker 安装其它平台安装支持的模型模型清单模型参数与运行内存快速启动 llama 模型llama 模型介绍运行 llama3.1 模型通过 HTTP API 访问ollama 命令语法常用示例特别示例自定义模型创建 Modelfile创建模型并运行集成 Web 页面Ope…...

【论文阅读】Grounding Language with Visual Affordances over Unstructured Data
Abstract 最近的研究表明,大型语言模型(llms)可以应用于将自然语言应用于各种各样的机器人技能。然而,在实践中,学习多任务、语言条件机器人技能通常需要大规模的数据收集和频繁的人为干预来重置环境或帮助纠正当前的…...

目标检测:滑块验证
最近在做一些爬虫相关的任务,有时候在登录时候需要去做滑块验证,刚好自己是做AI这一块得,就想着使用目标检测去做检测,然后绕过滑块。...

Unreal Engine 5 C++: 编辑器工具编写入门01(中文解释)
目录 准备工作 1.创建插件 2.修改插件设置 快速资产操作(quick asset action) 自定义编辑器功能 0.创建编辑器button,测试debug message功能 大致流程 详细步骤 1.ctrlF5 launch editor 2.创建新的cpp class,derived from AssetAction…...

力扣上刷题之C语言实现-Day2
一. 简介 本文记录一下,力扣C语言逻辑题。主要涉及 数组方面的知识。 二. 涉及数组的 C语言逻辑题 1. 两数之和 给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target…...

Visual Studio 2022 - QT 环境中文字符乱码问题
Visual Studio 2022 - QT 环境中文字符乱码问题 一、Visual Studio 2022 - Qt 环境 在 QT 中使用中文字符串常会出现乱码现象,如下:以下提供了几个解决方法,仅供参考 QString str "百香果真是一直可爱的小猫咪"; qDebug() <…...

获得ASPICE认证需要满足哪些条件?
要获得ASPICE认证,需要满足以下条件: ( 要明确的是:在ASPICE行业中专业来说,ASPICE项目是没有认证,而只有评估。不过,为了方便沟通,人们常将这一评估过程称为认证。) 一、基础条件…...

鸿蒙_异步详解
参考详细链接: 鸿蒙HarmonyOS异步并发开发指南...

linux日志查询搜索view
view 命令实际上是 vim 编辑器的一个只读模式。当你使用 view 打开一个文件时,实际上是在用 vim 查看该文件,只是不能编辑内容。因此,view 下的搜索操作与 vim 类似。 以下是如何在 view 模式下进行搜索: 启动 view 并打开文件&a…...

性能测试工具——JMeter
目录 一、JMeter介绍 1、下载安装JMeter 2、打开JMeter 方式一: 方式二: 3、JMeter基础设置 4、JMeter基本使用流程 (1)启动JMeter (2)在测试计划下添加线程组 (3)在 “线…...

1.《DevOps》系列K8S部署CICD流水线之部署K8S集群~version1.28.2
架构 服务器IP服务名称硬件配置192.168.1.100k8s-master8核、16G、120G192.168.1.101k8s-node18核、16G、120G192.168.1.102k8s-node28核、16G、120G192.168.1.103nfs2核、4G、500G 操作系统:Rocky9.3 后续通过K8S部署GitLab、Harbor、Jenkins 一、环境准备 关…...

c/c++八股文
c基础 一、指针和引用的区别 定义方式: 指针是通过 * 操作符定义的变量,用于存储另一个变量的地址。例如: int* p &x;引用是通过 & 操作符定义的别名,直接引用另一个变量。例如: int& r x; 内存占用: 指针是一个独立的变量,占用一定的内存空间。引用不是独立的…...

Docker配置代理解决pull超时问题
操作系统: CentOS Linux 8 Docker版本: 26.1.3 前置:你需拥有🐱 1. 配置 proxy.conf 1.1 创建配置文件目录 创建 docker.service.d,进入到 docker.service.d 中打开 proxy.conf (没有文件打开会自动创建)。 注意:每个人的路径可…...

ECharts的特点
ECharts是一款基于JavaScript的数据可视化图表库,由百度团队开源,并于2018年初捐赠给Apache基金会,成为ASF孵化级项目。ECharts提供了直观、生动、可交互、可个性化定制的数据可视化图表,广泛应用于数据分析和展示领域。以下是关于…...

JVM OutOfMemoryError 与 StackOverflowError 异常
目录 前言 堆溢出 虚拟机栈和本地方法栈溢出 方法区溢出 前言 JVM规范中规定, 除了程序计数器之外, 其他的运行时数据区域, 例如堆栈, 方法区, 都会出现OutOfMemoryError异常. 那么到底是怎么样的代码, 才会引起堆溢出, 栈溢出, 或者是方法区的溢出呢? 如果遇到了又该如何…...

linux防火墙学习
Linux 防火墙配置(iptables和firewalld) Linux 防火墙配置(iptables和firewalld)_iptables配置文件位置-CSDN博客 Linux查看防火墙状态及开启关闭命令_linux 查看防火墙-CSDN博客...

Java面试篇基础部分- Java中的阻塞队列
首先队列是一种前进后出的操作结构,也就是说它只允许从队列前端进入,从队列后端退出。这个前端和后端看个人如何理解,也就是通常所说的入队和出队,队头和队尾。 阻塞队列和一般队列的不同就在于阻塞队列是可以阻塞的,这里所说的并不是说队列中间或者队头队尾被拦截了,而是…...

Go语言并发编程之Channels详解
并发编程是Go语言的一大特色,而channel(通道)则是Go语言中用于实现并发的核心工具之一。它源于CSP(Communicating Sequential Processes)的概念,旨在让多个goroutine之间能够高效地进行通信和同步。本文将深入探讨channel的用法、原理和最佳实践,通过丰富的示例代码和详…...

【Java集合】LinkedList
概要 LinkedList是用链表结构存储数据的,很适合数据的动态插入和删除,随机访问速度比较慢。另外,他还提供了 List 接口中没有定义的方法,专门用于操作表头和表尾元素,可以当作堆栈、队列和双向队列使用。 链表 链表是…...

大模型之基准测试集(Benchmark)-给通义千问2.0做测评的10个权威测基准测评集
引言 在去年(2023)云栖大会上,阿里云正式发布千亿级参数大模型通义千问2.0。据现场介绍,在10个权威测评中,通义千问2.0综合性能超过GPT-3.5,正在加速追赶GPT-4。以下是通义千问在MMLU、C-Eval、GSM8K、HumanEval、MATH等10个主流…...

解决selenium爬虫被浏览器检测问题
文章目录 专栏导读1.问题解析2.代码解析(Edge/Chrome通用)2.1 设置Edge浏览器选项:2.2 尝试启用后台模式2.3 排除启用自动化模式的标志2.4 禁用自动化扩展2.5 设置用户代理2.6 实例化浏览器驱动对象并应用配置2.7 在页面加载时执行JavaScript代码 3.完整代码(可直接…...

计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-17
计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-17 1. Large Language Models in Biomedical and Health Informatics: A Review with Bibliometric Analysis H Yu, L Fan, L Li, J Zhou, Z Ma, L Xian, W Hua, S He… - Journal of Healthcare …, 2024 生物…...

LLM - 理解 多模态大语言模型(MLLM) 的 幻觉(Hallucination) 与相关技术 (七)
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/142463789 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 多模态…...

如何在C++中实现RDP协议的屏幕更新功能?
在C++中实现RDP协议的屏幕更新功能涉及多个步骤,包括接收RDP服务器发送的屏幕更新PDU(协议数据单元)、解析这些PDU以获取图像数据,以及将这些图像数据渲染到本地显示设备上。以下是一个简化的流程,指导你如何在C++中处理这一功能: 1. 监听和接收屏幕更新PDU 首先,你的…...

Tornado 是一个 Python 异步网络库和 web 框架
Tornado 是一个 Python 异步网络库和 web 框架,它最初由 FriendFeed 开发,后来被 Facebook 收购并开源。Tornado 因其非阻塞的 I/O 操作和优秀的性能而广受欢迎,特别是在需要处理大量并发连接的应用中。Tornado 的底层实现主要依赖于 Python …...

鹏哥C语言49---第5次作业:选择语句 if 和 switch
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> //---------------------------------------------------------------------------------第 5 次作业:选择语句 if 和 switch //-----------------------------------------------------------------1.输…...

通过 Flink 的火焰图定位反压
在 Apache Flink 中,Web UI 提供了丰富的监控工具来帮助用户分析和解决作业性能问题,其中火焰图(Flame Graph)是用于分析反压问题的一个强有力的工具。反压可能是由于作业中某些算子处理速度过慢,或者资源耗尽导致的。…...

初识爬虫8
1.selenium的作用和工作原理 2. 使用selenium,完成web浏览器调用 # -*- coding: utf-8 -*- # 自动化测试工具,降低难度,性能也降低 from selenium import webdriverdriver webdriver.Edge()driver.get("https://www.itcast.cn/")…...

Unity SRP 可编程渲染管线的基本用法
可编程渲染管线使用教程 SRP 可以处理Canvas为Screen Space - Overlay的渲染 安装插件 首先进入package manager,下载Core RP Lib组件 创建渲染管线 编写渲染管线逻辑脚本 新建脚本取名为MPipeLine,该脚本用于实现渲染管线的处理逻辑 using Unity…...