Elasticsearch知识汇总之ElasticSearch部署
五 ElasticSearch部署
部署Elasticsearch,可以在任何 Linux、MacOS 或 Windows 机器上运行 Elasticsearch。在Docker 容器 中运行 Elasticsearch 。使用Elastic Cloud on Kubernetes 设置和管理 Elasticsearch、Kibana、Elastic Agent 以及 Kubernetes 上的 Elastic Stack 。
Elasticsearch 安装包,以下包格式提供:
Zip在 Windows 上安装 Elasticsearch。
tar.gz可用于安装在任何 Linux 发行版和 MacOS 上。
Deb软件包适用于 Debian、Ubuntu 和其他基于 Debian 的系统。Debian 软件包可以从 Elasticsearch 网站或Debian 存储库下载。
rpm软件包适合安装在 Red Hat、Centos、SLES、OpenSuSE 和其他基于 RPM 的系统上。RPM 可以从 Elasticsearch 网站或我们的 RPM 存储库下载。
docker映像可用于将 Elasticsearch 作为 Docker 容器运行。它们可以从 Elastic Docker Registry 下载。
5.1 裸金属部署
本部署方案采用三台服务器部署master节点和data节点
服务器信息表
IP地址 | 配置 | 系统版本 | 角色 |
1xx.1xx.1xx.60 | 4C 8G 100G硬盘(SSD) | CentOS 7.9 64位 | Master/data |
1xx.1xx.1xx.61 | 4C 8G 100G硬盘(SSD) | CentOS 7.9 64位 | Master/data |
1xx.1xx.1xx.62 | 4C 8G 100G硬盘(SSD) | CentOS 7.9 64位 | Master/data |
修改系统参数
Linux默认配置的File descriptors(文件描述符)不能够满足elasticsearch高吞吐量的要求
vi /etc/security/limits.conf
# 在最后加入,修改完成后,重启系统生效。
* soft nofile 131072
* hard nofile 131072
部署流程
所有节点
→ 安装jdk环境
jdk1.8安装
将jdk-8u271-linux-x64.tar.gz上传到服务器,并解压
tar -zvxf jdk-8u271-linux-x64.tar.gz -C
mv jdk1.8.0_271 /usr/local/jdk
在 /etc/profile 添加以下环境变量
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.:%JAVA_HOME/lib/dt.jar:%JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
如下图:
重新加载环境变量
source /etc/profile
→ 创建目录(所有节点)
- 创建es用户 data目录和log目录
useradd elasticsearch
mkdir -pv /home/esdata
mkdir -pv /home/logs
chown -R elasticsearch.elasticsearch /home/esdata /home/logs
chown -R elasticsearch.elasticsearch /usr/local/elasticsearch/
(2)elasticsearch安装
将elasticsearch-7.9.0-linux-x86_64.tar.gz安装包上传到服务器并解压
tar xf elasticsearch-7.9.0-linux-x86_64.tar.gz
mv elasticsearch-7.9.0-linux /usr/local/elasticsearch
添加elasticsearch用户并根据系统配置修改elasticsearch配置文件
修改es配置文件
编辑 elasticsearch.yml
cluster.name: logdata
node.name:elkmaster
node.roles: [data,master]
path.data: /home/esdata
path.logs: /home/eslogs
bootstrap.memory_lock: true
network.host: 1xx.1xx.1xx.60
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
编辑 jvm.options
-Xms4g
-Xmx4g
备注: 一般设置为服务器内存的50%-60%
启动es服务
su - elasticsearch -c "/usr/local/elasticsearch/bin/elasticsearch &"
kibana安装(非必要组件)
将kibana-7.9.0.tar.gz安装包上传到服务器并解压
tar xf kibana-7.9.0.tar.gz
mv kibana-7.9.0 /usr/local/kibana
修改kibana.yml 连接es地址
server.port: 5601
server.host: "1xx.1xx.1xx.60"
elasticsearch.hosts: ["http://1xx.1xx.1xx.60:9200","http://1xx.1xx.1xx.61:9200","http://1xx.1xx.1xx.62:9200"]
启动kibana
./kibana --allow-root &
开放端口(若防火墙开启则需要执行以下命令,若防火墙关闭则不需要执行)
firewall-cmd --add-port=9200/tcp --permanent
firewall-cmd --add-port=9300/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all
→ 检查是否启动成功
jps查看或者直接查看elasticsearch进程
5.2 Docker-Compose部署ElasticSearch+Kibana
部署说明
用docker-compose快速部署es集群+kibana,这个集群是带安全检查的(自签证书+账号密码)
找个干净目录,新建名为.env的文件,内容如下,
# elastic账号的密码 (至少六个字符)
ELASTIC_PASSWORD=************
# kibana_system账号的密码 (至少六个字符),该账号仅用于一些kibana的内部设置,不能用来查询es
KIBANA_PASSWORD=************
# es和kibana的版本
STACK_VERSION=8.2.2
# 集群名字
CLUSTER_NAME=docker-cluster
# x-pack安全设置,这里选择basic,基础设置,如果选择了trail,则会在30天后到期
LICENSE=basic
#LICENSE=trial
# es映射到宿主机的的端口
ES_PORT=9200
# kibana映射到宿主机的的端口
KIBANA_PORT=5601
# es容器的内存大小,请根据自己硬件情况调整 在此验证给与1G配置
MEM_LIMIT=1073741824
# 命名空间,会体现在容器名的前缀上
COMPOSE_PROJECT_NAME=demo
然后是docker-compose.yaml文件,这里面会用到刚才创建的.env文件,一共创建了五个容器:启动操作、三个es组成集群,一个kibana
version: "2.2"
services:
setup:
image: elasticsearch:${STACK_VERSION}
volumes:
- certs:/usr/share/elasticsearch/config/certs
user: "0"
command: >
bash -c '
if [ x${ELASTIC_PASSWORD} == x ]; then
echo "Set the ELASTIC_PASSWORD environment variable in the .env file";
exit 1;
elif [ x${KIBANA_PASSWORD} == x ]; then
echo "Set the KIBANA_PASSWORD environment variable in the .env file";
exit 1;
fi;
if [ ! -f config/certs/ca.zip ]; then
echo "Creating CA";
bin/elasticsearch-certutil ca --silent --pem -out config/certs/ca.zip;
unzip config/certs/ca.zip -d config/certs;
fi;
if [ ! -f config/certs/certs.zip ]; then
echo "Creating certs";
echo -ne \
"instances:\n"\
" - name: es01\n"\
" dns:\n"\
" - es01\n"\
" - localhost\n"\
" ip:\n"\
" - 127.0.0.1\n"\
" - name: es02\n"\
" dns:\n"\
" - es02\n"\
" - localhost\n"\
" ip:\n"\
" - 127.0.0.1\n"\
" - name: es03\n"\
" dns:\n"\
" - es03\n"\
" - localhost\n"\
" ip:\n"\
" - 127.0.0.1\n"\
> config/certs/instances.yml;
bin/elasticsearch-certutil cert --silent --pem -out config/certs/certs.zip --in config/certs/instances.yml --ca-cert config/certs/ca/ca.crt --ca-key config/certs/ca/ca.key;
unzip config/certs/certs.zip -d config/certs;
fi;
echo "Setting file permissions"
chown -R root:root config/certs;
find . -type d -exec chmod 750 \{\} \;;
find . -type f -exec chmod 640 \{\} \;;
echo "Waiting for Elasticsearch availability";
until curl -s --cacert config/certs/ca/ca.crt https://es01:9200 | grep -q "missing authentication credentials"; do sleep 30; done;
echo "Setting kibana_system password";
until curl -s -X POST --cacert config/certs/ca/ca.crt -u elastic:${ELASTIC_PASSWORD} -H "Content-Type: application/json" https://es01:9200/_security/user/kibana_system/_password -d "{\"password\":\"${KIBANA_PASSWORD}\"}" | grep -q "^{}"; do sleep 10; done;
echo "All done!";
'
healthcheck:
test: ["CMD-SHELL", "[ -f config/certs/es01/es01.crt ]"]
interval: 1s
timeout: 5s
retries: 120
es01:
depends_on:
setup:
condition: service_healthy
image: elasticsearch:${STACK_VERSION}
volumes:
- certs:/usr/share/elasticsearch/config/certs
- esdata01:/usr/share/elasticsearch/data
ports:
- ${ES_PORT}:9200
environment:
- node.name=es01
- cluster.name=${CLUSTER_NAME}
- cluster.initial_master_nodes=es01,es02,es03
- discovery.seed_hosts=es02,es03
- ELASTIC_PASSWORD=${ELASTIC_PASSWORD}
- bootstrap.memory_lock=true
- xpack.security.enabled=true
- xpack.security.http.ssl.enabled=true
- xpack.security.http.ssl.key=certs/es01/es01.key
- xpack.security.http.ssl.certificate=certs/es01/es01.crt
- xpack.security.http.ssl.certificate_authorities=certs/ca/ca.crt
- xpack.security.http.ssl.verification_mode=certificate
- xpack.security.transport.ssl.enabled=true
- xpack.security.transport.ssl.key=certs/es01/es01.key
- xpack.security.transport.ssl.certificate=certs/es01/es01.crt
- xpack.security.transport.ssl.certificate_authorities=certs/ca/ca.crt
- xpack.security.transport.ssl.verification_mode=certificate
- xpack.license.self_generated.type=${LICENSE}
mem_limit: ${MEM_LIMIT}
ulimits:
memlock:
soft: -1
hard: -1
healthcheck:
test:
[
"CMD-SHELL",
"curl -s --cacert config/certs/ca/ca.crt https://localhost:9200 | grep -q 'missing authentication credentials'",
]
interval: 10s
timeout: 10s
retries: 120
es02:
depends_on:
- es01
image: elasticsearch:${STACK_VERSION}
volumes:
- certs:/usr/share/elasticsearch/config/certs
- esdata02:/usr/share/elasticsearch/data
environment:
- node.name=es02
- cluster.name=${CLUSTER_NAME}
- cluster.initial_master_nodes=es01,es02,es03
- discovery.seed_hosts=es01,es03
- bootstrap.memory_lock=true
- xpack.security.enabled=true
- xpack.security.http.ssl.enabled=true
- xpack.security.http.ssl.key=certs/es02/es02.key
- xpack.security.http.ssl.certificate=certs/es02/es02.crt
- xpack.security.http.ssl.certificate_authorities=certs/ca/ca.crt
- xpack.security.http.ssl.verification_mode=certificate
- xpack.security.transport.ssl.enabled=true
- xpack.security.transport.ssl.key=certs/es02/es02.key
- xpack.security.transport.ssl.certificate=certs/es02/es02.crt
- xpack.security.transport.ssl.certificate_authorities=certs/ca/ca.crt
- xpack.security.transport.ssl.verification_mode=certificate
- xpack.license.self_generated.type=${LICENSE}
mem_limit: ${MEM_LIMIT}
ulimits:
memlock:
soft: -1
hard: -1
healthcheck:
test:
[
"CMD-SHELL",
"curl -s --cacert config/certs/ca/ca.crt https://localhost:9200 | grep -q 'missing authentication credentials'",
]
interval: 10s
timeout: 10s
retries: 120
es03:
depends_on:
- es02
image: elasticsearch:${STACK_VERSION}
volumes:
- certs:/usr/share/elasticsearch/config/certs
- esdata03:/usr/share/elasticsearch/data
environment:
- node.name=es03
- cluster.name=${CLUSTER_NAME}
- cluster.initial_master_nodes=es01,es02,es03
- discovery.seed_hosts=es01,es02
- bootstrap.memory_lock=true
- xpack.security.enabled=true
- xpack.security.http.ssl.enabled=true
- xpack.security.http.ssl.key=certs/es03/es03.key
- xpack.security.http.ssl.certificate=certs/es03/es03.crt
- xpack.security.http.ssl.certificate_authorities=certs/ca/ca.crt
- xpack.security.http.ssl.verification_mode=certificate
- xpack.security.transport.ssl.enabled=true
- xpack.security.transport.ssl.key=certs/es03/es03.key
- xpack.security.transport.ssl.certificate=certs/es03/es03.crt
- xpack.security.transport.ssl.certificate_authorities=certs/ca/ca.crt
- xpack.security.transport.ssl.verification_mode=certificate
- xpack.license.self_generated.type=${LICENSE}
mem_limit: ${MEM_LIMIT}
ulimits:
memlock:
soft: -1
hard: -1
healthcheck:
test:
[
"CMD-SHELL",
"curl -s --cacert config/certs/ca/ca.crt https://localhost:9200 | grep -q 'missing authentication credentials'",
]
interval: 10s
timeout: 10s
retries: 120
kibana:
depends_on:
es01:
condition: service_healthy
es02:
condition: service_healthy
es03:
condition: service_healthy
image: kibana:${STACK_VERSION}
volumes:
- certs:/usr/share/kibana/config/certs
- kibanadata:/usr/share/kibana/data
ports:
- ${KIBANA_PORT}:5601
environment:
- SERVERNAME=kibana
- ELASTICSEARCH_HOSTS=https://es01:9200
- ELASTICSEARCH_USERNAME=kibana_system
- ELASTICSEARCH_PASSWORD=${KIBANA_PASSWORD}
- ELASTICSEARCH_SSL_CERTIFICATEAUTHORITIES=config/certs/ca/ca.crt
mem_limit: ${MEM_LIMIT}
healthcheck:
test:
[
"CMD-SHELL",
"curl -s -I http://localhost:5601 | grep -q 'HTTP/1.1 302 Found'",
]
interval: 10s
timeout: 10s
retries: 120
volumes:
certs:
driver: local
esdata01:
driver: local
esdata02:
driver: local
esdata03:
driver: local
kibanadata:
driver: local
注意:.env和docker-compose.yaml两个文件在同一目录下
启动应用
在docker-compose.yaml文件所在目录,执行命令docker-compose up -d启动所有容器
[root@node212 es]# docker-compose up -d
Creating network "demo_default" with the default driver
Creating volume "demo_certs" with local driver
Creating volume "demo_esdata01" with local driver
Creating volume "demo_esdata02" with local driver
Creating volume "demo_esdata03" with local driver
Creating volume "demo_kibanadata" with local driver
Pulling setup (elasticsearch:8.2.2)...
8.2.2: Pulling from library/elasticsearch
d5fd17ec1767: Pull complete
960bdea67557: Pull complete
87e8a9ab5eb5: Pull complete
d1a41a1f6148: Pull complete
2f30a84c2b73: Pull complete
2c111419937d: Pull complete
a098105ec516: Pull complete
4c72f9050453: Pull complete
77b3d5560f6a: Pull complete
Digest: sha256:8c666cb1e76650306655b67644a01663f9c7a5422b2c51dd570524267f11ce3d
Status: Downloaded newer image for elasticsearch:8.2.2
Pulling kibana (kibana:8.2.2)...
8.2.2: Pulling from library/kibana
d5fd17ec1767: Already exists
0e13695e6282: Pull complete
f4c86adffcb8: Pull complete
37df8a7a2f1c: Pull complete
605b30158b0c: Pull complete
4f4fb700ef54: Pull complete
8789a463d8bc: Pull complete
6c1b4670a98a: Pull complete
787921eb6497: Pull complete
7833e8f6b5e0: Pull complete
60937e7413ca: Pull complete
a04fb33dd003: Pull complete
5fcdf8cb4a0b: Pull complete
929af379dbc3: Pull complete
Digest: sha256:cf34801f36a2e79c834b3cdeb0a3463ff34b8d8588c3ccdd47212c4e0753f8a5
Status: Downloaded newer image for kibana:8.2.2
Creating demo_setup_1 ... done
Creating demo_es01_1 ... done
Creating demo_es02_1 ... done
Creating demo_es03_1 ... done
Creating demo_kibana_1 ... done
查看容器状态,负责启动的demo_setup_1已退出,其他的正常运行
最终部署成功示例如下:
查看demo_setup_1的日志,提示启动顺利
[root@node212 ~]# docker logs demo_setup_1
Setting file permissions
Waiting for Elasticsearch availability
Setting kibana_system password
All done!
如果要使用curl命令向ES发请求,需要提前将crt文件从容器中复制出来
docker cp demo_es01_1:/usr/share/elasticsearch/config/certs/es01/es01.crt .
验证
现在来验证es集群和kibana能不能正常工作
浏览器访问https://localhost:9200/,注意是https,会看到以下警告页面
根据之前的配置账号elastic,浏览器显示如下,证明es成功响应了
如果chrome上安装了eshead插件,此时就能查看es集群情况了(注意内部的地址栏中,要用https,而非http),如下图,一共三个节点,es02前面有五角星标志,表示其主节点的身份
目前看 es集群部署和运行都已经正常,再看kibana是否可用
访问http://localhost:5601/,账号elastic,密码*********
清理
如果要删除es,执行docker-compose down就会删除容器,但是,此命令不会删除数据,下次执行docker-compose up -d后,新的es集群中会出现刚才创建的test001索引,并且数据也在
这是因为docker-compose.yaml中使用了数据卷volume存储es集群的关键数据,这些输入被保存在宿主机的磁盘上
❯ docker volume ls
DRIVER VOLUME NAME
local demo_certs
local demo_esdata01
local demo_esdata02
local demo_esdata03
local demo_kibanadata
执行docker volume rm demo_certs demo_esdata01 demo_esdata02
demo_esdata03即可将它们彻底清除
以上就是快速部署es集群+kibana的整个过程了
5.3 Kubernetes部署ElasticSearch集群
由3个master节点和3个data节点组成, master采用statefulset,不进行数据持久化, data节点使用持久化存储卷采用NFS
5.3.1 部署nfs
yum install nfs-utils rpcbind
创建共享目录 cat /etc/exports
/root/es/data1 *(rw,sync,no_subtree_check,no_root_squash)
/root/es/data2 *(rw,sync,no_subtree_check,no_root_squash)
/root/es/data3 *(rw,sync,no_subtree_check,no_root_squash)
启动nfs、rpcbing
systemctl restart nfs
systemctl restart rpcbind
在其他工作节点安装nfs-utils并测试挂载
yum install nfs-utils
mount -t nfs1xx.1xx.0.4:/nfs/data /mnt
查看挂载信息
mount
5.3.2 创建PV
[root@test-1 es]# cat pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: es-store-0
spec:
accessModes:
- ReadWriteOnce
volumeMode: Filesystem
capacity:
storage: 1Gi
mountOptions:
- nolock
nfs:
path: /root/es/data1
server: 1xx.1xx.0.4
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: es-store-1
spec:
accessModes:
- ReadWriteOnce
volumeMode: Filesystem
capacity:
storage: 1Gi
mountOptions:
- nolock
nfs:
path: /root/es/data2
server: 1xx.1xx.0.4
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: es-store-2
spec:
accessModes:
- ReadWriteOnce
volumeMode: Filesystem
capacity:
storage: 1Gi
mountOptions:
- nolock
nfs:
path: /root/es/data3
server: 1xx.1xx.0.4
kubectl apply -f svc.yaml
5.3.3 创建svc
[root@test-1 es]# cat svc.yaml
apiVersion: v1
kind: Service
metadata:
name: es-svc
namespace: test
labels:
app: es-svc
spec:
selector:
app: es
ports:
- name: http
port: 9200 # 需要暴露的集群端口(service暴露的)
protocol: TCP
targetPort: 9200 # 容器的端口(后端容器提供服务的端口)
nodePort: 30200 # type=NodePort时有效 : 映射到物理机的端口 (范围30000-32767)
type: NodePort
# clusterIP: ""
---
apiVersion: v1
kind: Service
metadata:
name: es-master-svc
namespace: test
labels:
app: es-master-svc
spec:
selector:
app: es
role: master
publishNotReadyAddresses: true
ports:
- protocol: TCP
name: transport
port: 9300 # 需要暴露的集群端口(service暴露的)
# targetPort: 9300 # 容器的端口(后端容器提供服务的端口)
# nodePort: 30300 # type=NodePort时有效 : 映射到物理机的端口 (范围30000-32767)
type: ClusterIP
clusterIP: None
kubectl apply -f svc.yaml
5.3.4 创建es-master
[root@test-1 es]# cat es-master.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
app: es-master
name: es-master
namespace: test
spec:
replicas: 3
serviceName: es-master-svc
selector:
matchLabels:
app: es
role: master
template:
metadata:
labels:
app: es
role: master
spec:
initContainers:
- name: init-sysctl
image: busybox
command:
- sysctl
- -w
- vm.max_map_count=262144
securityContext:
privileged: true
containers:
- name: es-master
image: elasticsearch:7.16.2
imagePullPolicy: Never
ports:
- containerPort: 9200
protocol: TCP
name: http
- containerPort: 9300
protocol: TCP
name: transport
env:
- name: "node.name"
valueFrom:
fieldRef:
fieldPath: "metadata.name"
- name: "cluster.name"
value: "es-cluster"
- name: "cluster.remote.connect"
value: "false"
- name: "node.master"
value: "true"
- name: "node.data"
value: "false"
- name: "node.ingest"
value: "false"
- name: "network.host"
value: "0.0.0.0"
- name: "path.data"
value: "/usr/share/elasticsearch/data"
- name: "path.logs"
value: "/usr/share/elasticsearch/logs"
- name: "bootstrap.memory_lock"
value: "false"
- name: "http.compression"
value: "true"
- name: "http.cors.enabled"
value: "true"
- name: "http.cors.allow-origin"
value: "*"
- name: "cluster.initial_master_nodes"
value: "es-master-0,es-master-1,es-master-2"
- name: "discovery.seed_hosts"
value: "es-master-svc"
- name: "xpack.ml.enabled"
value: "false"
- name: "ES_JAVA_OPTS"
value: "-Xms50m -Xmx50m"
resources:
requests:
cpu: 100m
limits:
cpu: 500m
livenessProbe:
tcpSocket:
port: transport
initialDelaySeconds: 60
periodSeconds: 10
kubectl apply -f es-master.yaml
测试:(进入其中一个pod,查看状态)
5.3.5 创建es-data
[root@test-1 es]# cat es-data.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
app: es-data
name: es-data
namespace: test
spec:
selector:
matchLabels:
app: es
role: data
serviceName: es-svc
replicas: 1
template:
metadata:
labels:
app: es
role: data
spec:
initContainers:
- name: init-sysctl
image: busybox
command:
- sysctl
- -w
- vm.max_map_count=262144
securityContext:
privileged: true
containers:
- name: es-data
image: elasticsearch:7.16.2
imagePullPolicy: Never
env:
- name: node.name
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: "node.max_local_storage_nodes"
value: "2"
- name: "cluster.name"
value: "es-cluster"
- name: "cluster.remote.connect"
value: "false"
- name: "node.master"
value: "false"
- name: "node.data"
value: "true"
- name: "node.ingest"
value: "false"
- name: "network.host"
value: "0.0.0.0"
- name: "path.data"
value: "/usr/share/elasticsearch/data"
- name: "path.logs"
value: "/usr/share/elasticsearch/logs"
- name: "bootstrap.memory_lock"
value: "false"
- name: "http.compression"
value: "true"
- name: "http.cors.enabled"
value: "true"
- name: "http.cors.allow-origin"
value: "*"
- name: "discovery.seed_hosts"
value: "es-master-svc"
- name: "xpack.ml.enabled"
value: "false"
- name: "ES_JAVA_OPTS"
value: "-Xms50m -Xmx50m"
resources:
requests:
cpu: 200m
limits:
cpu: 500m
ports:
- containerPort: 9200
protocol: TCP
name: http
- containerPort: 9300
protocol: TCP
name: transport
livenessProbe:
tcpSocket:
port: transport
initialDelaySeconds: 60
periodSeconds: 10
readinessProbe:
httpGet:
path: /_cluster/health
port: http
scheme: HTTP
initialDelaySeconds: 60
timeoutSeconds: 10
volumeMounts:
- mountPath: /usr/share/elasticsearch/data
name: storage
volumeClaimTemplates:
- metadata:
name: storage
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
kubectl apply -f es-data.yaml
相关文章:

Elasticsearch知识汇总之ElasticSearch部署
五 ElasticSearch部署 部署Elasticsearch,可以在任何 Linux、MacOS 或 Windows 机器上运行 Elasticsearch。在Docker 容器 中运行 Elasticsearch 。使用Elastic Cloud on Kubernetes 设置和管理 Elasticsearch、Kibana、Elastic Agent 以及 Kubernetes 上的 Elasti…...

ROBOVERSE:面向可扩展和可泛化机器人学习的统一平台、数据集和基准
25年4月来自UC Berkeley、北大、USC、UMich、UIUC、Stanford、CMU、UCLA 和 北京通用 AI 研究院(BIGAI)的论文“ROBOVERSE: Towards a Unified Platform, Dataset and Benchmark for Scalable and Generalizable Robot Learning”。 数据扩展和标准化评…...
LVGL的核心:lv_timer_handler
文章目录 🧠 一句话总结 LVGL 的运行核心:🔁 1. while(1) 主循环中的 lv_task_handler()⏱️ 2. lv_timer_handler() 定时器调度核心✅ 并发控制✅ 关键行为流程:🌀 任务执行逻辑:🧮 计算下一次…...

(41)VTK C++开发示例 ---qt使用vtk最小示例
文章目录 1. 概述2. CMake链接VTK3. main.cpp文件4. 演示效果 更多精彩内容👉内容导航 👈👉VTK开发 👈 1. 概述 本文演示了在Qt中使用VTK的最小示例程序,使用VTK创建显示一个锥体; 采用Cmake作为构建工具&a…...
⭐️⭐️⭐️【课时1:大模型是什么?】学习总结 ⭐️⭐️⭐️ for《大模型Clouder认证:基于百炼平台构建智能体应用》认证
一、学习目标 概要 通过学习《课时1:大模型是什么?》,全面了解大模型的基础概念、核心特点、发展脉络及阿里云在大模型领域的布局,为后续基于百炼平台构建智能体应用的实践操作打下坚实的理论基础。 具体目标列表 理解人工智能到大模型的演变逻辑,明确大模型在AI发展历…...

OS7.【Linux】基本指令入门(6)
目录 1.zip和unzip 配置指令 使用 两个名词:打包和压缩 打包 压缩 Linux下的操作演示 压缩和解压缩文件 压缩和解压缩目录 -d选项 2.tar Linux下的打包和压缩方案简介 czf选项 xzf选项 -C选项 tzf选项 3.bc 4.uname 不带选项的uname -a选项 -r选项 -v选项…...

国标GB28181视频平台EasyCVR安防系统部署知识:如何解决异地监控集中管理和组网问题
在企业、连锁机构及园区管理等场景中,异地监控集中管控与快速组网需求日益迫切。弱电项目人员和企业管理者亟需整合分散监控资源,实现跨区域统一管理与实时查看。 一、解决方案 案例一:运营商专线方案 利用运营商专线,连接各分…...

O2O上门服务如何颠覆传统足浴行业?真实案例分析
在湖南经营传统足浴店的张总最近遇到了件让他哭笑不得的事。原本他的门店生意还算稳定,虽然这两年行情不好,但靠着老顾客还能勉强维持。可谁想到,一次好心帮忙,竟让他发现了行业的新天地。 几年前,张总的一位做砂石生意…...

金仓数据库永久增量备份技术原理与操作
先用一张图说明一下常见的备份方式 为什么需要永久增量备份 传统的数据库备份方案通常是间隔7天对数据库做一次全量备份(完整备份),每天会基于全量备份做一次增量备份,如此循环,这种备份方案在全备数据量过大场景下…...

19、HashTable(哈希)、位图的实现和布隆过滤器的介绍
一、了解哈希【散列表】 1、哈希的结构 在STL中,HashTable是一个重要的底层数据结构, 无序关联容器包括unordered_set, unordered_map内部都是基于哈希表实现 哈希表又称散列表,一种以「key-value」形式存储数据的数据结构。哈希函数:负责将…...
函数级重构:如何写出高可读性的方法?
1. 引言:为什么方法级别的重构如此重要? 在软件开发中,方法(函数)是程序逻辑的基本单元。一个高质量的方法不仅决定了程序是否能正常运行,更直接影响到: 代码的可读性:能否让其他开发者快速理解可维护性:未来修改是否容易出错可测试性:是否便于编写单元测试协作效率…...

mysql中int(1) 和 int(10) 有什么区别?
困惑 最近遇到个问题,有个表的要加个user_id字段,user_id字段可能很大,于是我提mysql工单alter table xxx ADD user_id int(1)。领导看到我的sql工单,于是说:这int(1)怕是不够用吧,接下来是一通解…...

FreeRTOS如何实现100%的硬实时性?
实时系统在嵌入式应用中至关重要,其核心在于确保任务在指定时间内完成。根据截止时间满足的严格程度,实时系统分为硬实时和软实时。硬实时系统要求任务100%满足截止时间,否则可能导致灾难性后果,例如汽车安全系统或医疗设备。软实…...
深度学习 ----- 数据预处理
常用的高级数据预处理的方法总结 🧠 一、图像数据高级预处理方法汇总表 方法原理常用参数适用场景图像增强(Augmentation)改变图像外观/几何结构,提升泛化能力翻转、旋转、缩放、色调扰动等分类、检测、分割等Mixup / CutMix合成…...
Cluster Interconnect in Oracle RAC
Cluster Interconnect in Oracle RAC (文档 ID 787420.1)编辑转到底部 In this Document Purpose Scope Details Physical Layout of the Private Interconnect Why Do We Need a Private Interconnect ? Interconnect Failure Interconnect High Availability Private Inte…...
【Spring Boot 注解】@SpringBootApplication
文章目录 SpringBootApplication注解一、简介二、使用1.指定要扫描的包 SpringBootApplication注解 一、简介 SpringBootApplication 是 Spring Boot 提供的一个注解,通常用于启动类(主类)上,它是三个注解的组合: 1.…...
angular的cdk组件库
目录 一、虚拟滚动 一、虚拟滚动 <!-- itemSize相当于每个项目的高度为30px --><!-- 需要给虚拟滚动设置宽高,否则无法正常显示 --> <cdk-virtual-scroll-viewport [itemSize]"40" class"view_scroll"><div class"m…...

element-ui日期时间选择器禁止输入日期
需求解释:时间日期选择器,下方日期有禁止选择范围,所以上面的日期输入框要求禁止输入,但时间输入框可以输入,也就是下图效果,其中日历中的禁止选择可以通过【picker-options】这个属性实现,此属…...
HarmonyOS Next~HarmonyOS应用测试全流程解析:从一级类目上架到二级类目专项测试
HarmonyOS Next~HarmonyOS应用测试全流程解析:从一级类目上架到二级类目专项测试 引言:HarmonyOS生态下的质量保障挑战 在万物互联的智能时代,HarmonyOS作为分布式操作系统,为开发者带来了前所未有的创新空间&#x…...
网络安全体系架构:核心框架与关键机制解析
以下是关于网络安全体系架构设计相关内容的详细介绍: 一、开放系统互联安全体系结构 开放系统互联(OSI)安全体系结构是一种基于分层模型的安全架构,旨在为开放系统之间的通信提供安全保障。它定义了安全服务、安全机制以及它们在…...
一种安全不泄漏、高效、免费的自动化脚本平台
在数字化转型加速的今天,自动化脚本工具已成为提升效率的重要助手。然而,用户在选择这类工具时,往往面临两大核心关切:安全性与成本。冰狐智能辅助(IceFox Intelligent Assistant)作为一款新兴的自动化脚本…...

[论文阅读]Deeply-Supervised Nets
摘要 我们提出的深度监督网络(DSN)方法在最小化分类误差的同时,使隐藏层的学习过程更加直接和透明。我们尝试通过研究深度网络中的新公式来提升分类性能。我们关注卷积神经网络(CNN)架构中的三个方面:&…...

多模态大语言模型arxiv论文略读(六十二)
MileBench: Benchmarking MLLMs in Long Context ➡️ 论文标题:MileBench: Benchmarking MLLMs in Long Context ➡️ 论文作者:Dingjie Song, Shunian Chen, Guiming Hardy Chen, Fei Yu, Xiang Wan, Benyou Wang ➡️ 研究机构: The Chinese Univers…...

现代框架对SEO的深度影响
第8章:现代框架对SEO的深度影响 1. 引言 Next 和 Nuxt 是两个 🔥热度和使用度都最高 的现代 Web 开发框架,它们分别基于 ⚛️React 和 🖖Vue 构建,也代表了这两个生态的 🌐全栈框架。 Next 是由 Vercel 公司…...

密码学--RSA
一、实验目的 1.随机生成明文和加密密钥 2.利用C语言实现素数选择(素性判断)的算法 3.利用C语言实现快速模幂运算的算法(模重复平方法) 4.利用孙子定理实现解密程序 5.利用C语言实现RSA算法 6.利用RSA算法进行数据加/解密 …...

如何选择自己喜欢的cms
选择内容管理系统cms what is cms1.whatcms.org2.IsItWP.com4.Wappalyzer5.https://builtwith.com/6.https://w3techs.com/7. https://www.netcraft.com/8.onewebtool.com如何在不使用 CMS 检测器的情况下手动检测 CMS 结论 在开始构建自己的数字足迹之前,大多数人会…...

BUUCTF——杂项渗透之赛博朋克
下载附件,是一个txt。打开查看,数据如下: 感觉这个像是用十六进制编辑器打开后的图片数据。为了验证此想法,我用010editor打开,发现文件头的确是png图片的文件头。 把txt文件后缀改成png格式,再双击打开&am…...
【c++】 我的世界
太久没更新小游戏了 给个赞和收藏吧,求求了 要游戏的请私聊我 #include <iostream> #include <vector>// 定义世界大小 const int WORLD_WIDTH 20; const int WORLD_HEIGHT 10;// 定义方块类型 enum BlockType {AIR,GRASS,DIRT,STONE };// 定义世界…...

React 中集成 Ant Design 组件库:提升开发效率与用户体验
React 中集成 Ant Design 组件库:提升开发效率与用户体验 一、为什么选择 Ant Design 组件库?二、基础引入方式三、按需引入(优化性能)四、Ant Design Charts无缝接入图标前面提到了利用Redux提供全局维护,但如果在开发时再自己手动封装组件,不仅效率不高,可能开发的组件…...
HunyuanCustom, 腾讯混元开源的多模态定制视频生成框架
HunyuanCustom是一款由腾讯混元团队开发的多模态驱动定制视频生成框架,能够支持图像、音频、视频和文本等多种输入方式。该框架专注于生成高质量的视频,能够实现特定主体和场景的精准呈现。 HunyuanCustom是什么 HunyuanCustom是腾讯混元团队推出的一种…...