Centos7原生hadoop环境,搭建Impala集群和负载均衡配置

news2024/11/18 6:00:37

Centos7原生hadoop环境,搭建Impala集群和负载均衡配置

impala介绍

Impala集群包含一个Catalog Server (Catalogd)、一个Statestore Server (Statestored) 和若干个Impala Daemon (Impalad)。Catalogd主要负责元数据的获取和DDL的执行,Statestored主要负责消息/元数据的广播,Impalad主要负责查询的接收和执行。
Impalad又可配置为coordinator only、 executor only 或coordinator and executor(默认)三种模式。Coordinator角色的Impalad负责查询的接收、计划生成、查询的调度等,Executor角色的Impalad负责数据的读取和计算。默认配置下每个Impalad既是Coordinator又是Executor。生产环境建议做好角色分离,即每个Impalad要么是Coordinator要么是Executor。
在这里插入图片描述

Impala集群内部的元数据同步的机制 是从catalog批量收集一批表的元数据,通过statestore广播到coordinator。catalog在收集元数据的时候需要为每个表加一个读锁,如果这时候某一个表有跑批的任务,或者因为其他原因加了写锁,那么收集线程加读锁的逻辑就会被阻塞住,这就导致对应的 coordinator上的这些查询得不到执行(处于created状态)。

集群规划

节点名称impala-catalogdimpala-statestoredimpala-server
node01
node02××
node03××

配置本地yum源

1. 在node01节点上安装httpd服务器

#yum方式安装httpds服务器
[root@node01 ~]# yum install -y httpd
#启动httpd服务器
[root@node01 ~]# systemctl start httpd
#查看httpd转态是否启动
[root@node01 ~]# systemctl status httpd

2. 配置yum源

  • 上传下载好的impala的压缩包cdh5.14.0-centos7.tar.gz到/var/www/html/目录
  • 解压 tar -zxvf cdh5.14.0-centos7.tar.gz
  • 配置yum源:cd /etc/yum.repo/
  • vim local.repo
#需要与文件名保持一致
[local]
name=local_yum
#访问当前源的地址信息
baseurl=http://node01/cdh/5.14.0/
#为0不做gpg校验
gpgcheck=0
#当前源是否可用,为1则可用,为0则禁用
enabled=1

在这里插入图片描述

  1. 导入秘钥认证
  • 防止后边安装失败(这里有个小坑),每个节点都执行

    • rpm --import /var/www/html/cdh/RPM-GPG-KEY-cloudera
      

安装impala

  1. node01节点安装 impala-catalogd、impala-statestored、 impala-server(impala-Deamon)
[root@node01 ~]# yum install -y impala impala-server impala-state-store impala-catalog impala-shell

在这里插入图片描述

  1. node02节点安装impala-server(impala-Deamon)
yum install -y impala-server impala-shell

3.node03节点安装impala-server(impala-Deamon)

yum install -y impala-server impala-shell

在这里插入图片描述

修改hive的配置

1.修改hive-site.xml配置

  • cd /opt/yjx/apache-hive-3.1.2-bin/

  • vim hive-site.xml

<!--指定metastore地址,之前添加过可以不用添加 -->
<property>
    <name>hive.metastore.uris</name>
    <value>thrift://node01:9083</value>
</property>
<property>
    <name>hive.metastore.client.socket.timeout</name>
    <value>3600</value>
</property>

2.分发hive安装目录到集群中其它节点

  • scp hdfs-site.xml node02:$PWD
    scp hdfs-site.xml node03:$PWD
    

修改hadoop的配置

  • 在所有节点创建一下这个目录mkdir -p /var/lib/hadoop-hdfs

  • cd /opt/yjx/hadoop-3.1.2/etc/hadoop/

  • vim hdfs-site.xml

  • <!--添加如下内容 -->
    <!--打开短路读取开关 -->
    <!-- 打开短路读取配置-->
    <property>
        <name>dfs.client.read.shortcircuit</name>
        <value>true</value>
    </property>
    <!--这是一个UNIX域套接字的路路径,将⽤用于DataNode和本地HDFS客户机之间的通信 -->
    <property>
        <name>dfs.domain.socket.path</name>
        <value>/var/lib/hadoop-hdfs/dn_socket</value>
    </property>
    <!--block存储元数据信息开发开关 -->
    <property>
        <name>dfs.datanode.hdfs-blocks-metadata.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>dfs.client.file-block-storage-locations.timeout</name>
        <value>30000</value>
    </property>
    
  • 分发到其他节点

  • scp hdfs-site.xml node02:$PWD
    scp hdfs-site.xml node03:$PWD
    

创建impala配置的软连接

impala中跟Hadoop,Hive相关的配置使用Yum方式安装Impala时默认的Impala配置文件目录为/etc/impala/conf目录,Impala的使用要依赖Hadoop,Hive框架,所以需要把HDFS,Hive的配置文件告知Impala,执行下面的命令,把HDFS和Hive的配置文件软链接到/etc/impala/conf下(所有节点执行)

  • 所有节点均执行

  • ln -s /opt/yjx/hadoop-3.1.2/etc/hadoop/core-site.xml /etc/impala/conf/core-site.xml
    ln -s /opt/yjx/hadoop-3.1.2/etc/hadoop/hdfs-site.xml /etc/impala/conf/hdfs-site.xml
    ln -s /opt/yjx/apache-hive-3.1.2-bin/conf/hive-site.xml /etc/impala/conf/hive-site.xml
    

impala的自身配置(所有节点)

  • 创建日志目录mkdir -p /var/logs/impala/

  • chown impala:impala /var/logs/impala/

修改配置

在这里插入图片描述

  • cd /etc/default/
    scp impala node02:$PWD
    scp impala node03:$PWD
    

  • 创建目录用于存放mysql的连接驱动mkdir -p /usr/share/java/

  • 创建软连接

ln -s /opt/yjx/apache-hive-3.1.2-bin/lib/mysql-connector-java-5.1.32-bin.jar /usr/share/java/mysql-connector-java.jar

修改bigtop的JAVA_HOME路径

#修改bigtop的JAVA_HOME路径
[root@node01 ~]# vim /etc/default/bigtop-utils
[root@node02 ~]# vim /etc/default/bigtop-utils
[root@node03 ~]# vim /etc/default/bigtop-utils
#添加JAVA_HOME
export JAVA_HOME=/usr/java/jdk1.8.0_231-amd64

启动集群

  • 启动zookeeper

  • zkServer.sh start
    
  • 启动Hadoop

  • start-all.sh
    
  • 启动Hive

  • # 启动元数据服务
    nohup hive --service metastore > /dev/null 2>&1 &
    #启动hiveServer2
    nohup hiveserver2 > /dev/null 2>&1 &
    #客户端测试
    
    
  • 启动impala

  • [root@node01 ~]# service impala-state-store start
    [root@node01 ~]# service impala-catalog start
    [root@node01 ~]# service impala-server start
    
  • [root@node02 ~]# service impala-catalog start
    
  • [root@node03 ~]# service impala-server start
    
  • 验证Impala是否启动

  • ps -ef | grep impala
    
  • 浏览器Web界面验证

  • #访问impalad管理界面
    http://node01:25000/

在这里插入图片描述

说明: 如果进程数启动不对,web页面打不开,去指定的日志目录。

  • jps时出现空白的进程或者process information unavailable

  • 解决办法

    • #解决办法(注意只删除后缀为impala的即可)
      [root@node01 bin]# rm -rf /tmp/hsperfdata_impala*
      [root@node02 bin]# rm -rf /tmp/hsperfdata_impala*
      [root@node03 bin]# rm -rf /tmp/hsperfdata_impala*
      

Impala的负载均衡

Impala主要有三个组件,分别是statestore,catalog和impalad,对于Impalad节点,每一个节点都可以接收客户端的查询请求,并且对于连接到该Impalad的查询还要作为Coordinator节点(需要消耗一定的内存和CPU)存在,为了保证每一个节点的资源开销的平衡需要对于集群中Impalad节点做一下负载均衡。
 Cloudera官方推荐的代理方案是HAProxy,这里我们也使用这种方式实现负载均衡。实际生产中建议选择一个非Impala节点作为HAProxy安装节点。

1.选择一台机器安装haProxy,这里选择node01安装

  • yum install -y haproxy
    
  1. 修改haproxy.cfg配置文件,在配置文件中增加如下内容
  • vim /etc/haproxy/haproxy.cfg

  • #---------------------------------------------------------------------
    # Global settings
    #---------------------------------------------------------------------
    global
        # to have these messages end up in /var/log/haproxy.log you will
        # need to:
        #
        # 1) configure syslog to accept network log events.  This is done
        #    by adding the '-r' option to the SYSLOGD_OPTIONS in
        #    /etc/sysconfig/syslog
        #
        # 2) configure local2 events to go to the /var/log/haproxy.log
        #   file. A line like the following can be added to
        #   /etc/sysconfig/syslog
        #
        #    local2.*                       /var/log/haproxy.log
        #
        log         127.0.0.1 local2
    
        chroot      /var/lib/haproxy
        pidfile     /var/run/haproxy.pid
        maxconn     4000
        user        haproxy
        group       haproxy
        daemon
    
        # turn on stats unix socket
        stats socket /var/lib/haproxy/stats
    
    #---------------------------------------------------------------------
    # common defaults that all the 'listen' and 'backend' sections will
    # use if not designated in their block
    #---------------------------------------------------------------------
    defaults
        mode                    http
        log                     global
        option                  httplog
        option                  dontlognull
        option http-server-close
        option forwardfor       except 127.0.0.0/8
        option                  redispatch
        retries                 3
        timeout http-request    10s
        timeout queue           3m
        timeout connect         5000s
        timeout client          3600s
        timeout server          3600s
        timeout http-keep-alive 10s
        #健康检查时间
        timeout check           10s
        maxconn                 3000
    
    #---------------------------------------------------------------------
    # main frontend which proxys to the backends
    #---------------------------------------------------------------------
    frontend  main *:5000
        acl url_static       path_beg       -i /static /images /javascript /stylesheets
        acl url_static       path_end       -i .jpg .gif .png .css .js
    
        use_backend static          if url_static
        default_backend             app
    
    #---------------------------------------------------------------------
    # static backend for serving up images, stylesheets and such
    #---------------------------------------------------------------------
    backend static
        balance     roundrobin
        server      static 127.0.0.1:4331 check
    #---------------------------------------------------------------------
    # round robin balancing between the various backends
    #---------------------------------------------------------------------
    backend app
        balance     roundrobin
        server   app1 127.0.0.1:5001 check
        server   app1 127.0.0.1:5002 check
    
    #--------------配置 impala-jdbc -------------------------------------------------------
    listen impala :25001
        balance roundrobin
        option tcplog
        mode tcp
        #bind 0.0.0.0:21051
        #listen impalajdbc
        server impala_jdbc_01 node02:21050 check
        server impala_jdbc_02 node03:21050 check
    
    #--------------配置impala-shell-------------------------------------------------------
    listen impala :25002
        balance leastconn
        option tcplog
        mode tcp
        #listen impalashell
        server impala_shell_01 node01:21000 check
        server impala_shell_02 node02:21000 check
        server impala_shell_03 node03:21000 check
    #--------------配置 impala-hue -------------------------------------------------------
    #listen impala :25003
        #balance source
        #option tcplog
        #mode tcp
        #server impala_hue_01 host01:21050 check
        #server impala_hue_02 host02:21050 check
    #-----web ui----------------------------------------------------------------
    listen stats :1080
        balance
        stats  uri /stats
        stats refresh 30s
    #管理界面访问IP和端口
        #bind 0.0.0.0:1080
        mode http
        #定义管理界面
        #listen status
    

3.检查配置是否正确

/usr/sbin/haproxy  -f /etc/haproxy/haproxy.cfg
  1. 开启HAProxy代理服务

    开启:  systemctl start haproxy.service
    查看状态: systemctl status haproxy.service
    关闭: systemctl stop haproxy.service
    重启: systemctl restart haproxy.service
    开机自启动: chkconfig haproxy on
    
  2. 访问监控页面

http://node01:1080/stats

在这里插入图片描述

  • impala安装包链接: 提取码: k877

Haproxy的下载安装包离线安装步骤

下载安装Haproxy
下载地址:

https://src.fedoraproject.org/repo/pkgs/haproxy/
http://download.openpkg.org/components/cache/haproxy/
haproxy-1.8.10.tar.gz :
haproxy安装包下载 提取码: 6evh

(1)将下载下来的Haproxy放到Linux中, 解压文件

tar -zxvf haproxy-1.7.8.tar.gz

(2)yum安装GCC

yum install gcc-c++
(3)编译与安装Haproxy

进入Haproxy文件夹,编译执行命令:make TARGET=linux26

安装特定位置:make install PREFIX=/usr/local/haproxy

(4)进入创建的文件夹cd /usr/local/haproxy,修改配置

创建一个文件夹,mkdir conf config文件夹

进入该文件夹,在文件夹中,创建 一个文件执行命令: touch haproxy.cnf

编辑配置文件haproxy.cfg


Impala的常见错误

1.Impala不能创建表,提示权限的问题

  • [node02:21000] > create table person2(id int,name string,address string) row format delimited fields terminated by ',';
    Query: create table person2(id int,name string,address string) row format delimited fields terminated by ','
    ERROR: ImpalaRuntimeException: Error making 'createTable' RPC to Hive Metastore:
    CAUSED BY: MetaException: Got exception: org.apache.hadoop.security.AccessControlException Permission denied: user=impala, access=EXECUTE, inode="/hive/warehouse":root:supergroup:drwxr-x---
            at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:399)
            at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkTraverse(FSPermissionChecker.java:315)
            at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:242)
            at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:193)
            at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkTraverse(FSPermissionChecker.java:606)
            at org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkTraverse(FSDirectory.java:1801)
            at org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkTraverse(FSDirectory.java:1819)
            at org.apache.hadoop.hdfs.server.namenode.FSDirectory.resolvePath(FSDirectory.java:676)
            at org.apache.hadoop.hdfs.server.namenode.FSDirStatAndListingOp.getFileInfo(FSDirStatAndListingOp.java:114)
            at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getFileInfo(FSNamesystem.java:3102)
            at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getFileInfo(NameNodeRpcServer.java:1154)
            at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getFileInfo(ClientNamenodeProtocolServerSideTranslatorPB.java:966)
            at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
            at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:523)
            at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:991)
            at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:872)
            at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:818)
            at java.security.AccessController.doPrivileged(Native Method)
            at javax.security.auth.Subject.doAs(Subject.java:422)
            at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1729)
            at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2678)
    
  • 为对应的目录赋权777,我的数仓路径 /hive/warehouse/

  • hdfs dfs -chmod -R 777 /hive/warehouse/

在这里插入图片描述

2.hdfs进入安全模式

  • hdfs dfsadmin -safemode leave

3.启动datanode时日志发现如下报错信息

  • 启动日志
023-09-17 03:04:54,358 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Starting DataNode with maxLockedMemory = 0
2023-09-17 03:04:54,435 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Opened streaming server at /0.0.0.0:9866
2023-09-17 03:04:54,461 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Balancing bandwidth is 10485760 bytes/s
2023-09-17 03:04:54,461 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Number threads for balancing is 50
2023-09-17 03:04:54,476 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Shutdown complete.
2023-09-17 03:04:54,477 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: Exception in secureMain
java.io.IOException: The path component: '/var/lib/hadoop-hdfs' in '/var/lib/hadoop-hdfs/dn_socket' has permissions 0755 uid 993 and gid 991. It is not protected because it is owned by a user who is not root and not the effective user: '0'. This might help: 'chown root /var/lib/hadoop-hdfs' or 'chown 0 /var/lib/hadoop-hdfs'. For more information: https://wiki.apache.org/hadoop/SocketPathSecurity
        at org.apache.hadoop.net.unix.DomainSocket.validateSocketPathSecurity0(Native Method)
        at org.apache.hadoop.net.unix.DomainSocket.bindAndListen(DomainSocket.java:193)
        at org.apache.hadoop.hdfs.net.DomainPeerServer.<init>(DomainPeerServer.java:40)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.getDomainPeerServer(DataNode.java:1195)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.initDataXceiver(DataNode.java:1162)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:1417)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:501)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:2783)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:2691)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:2733)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:2877)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:2901)
2023-09-17 03:04:54,483 INFO org.apache.hadoop.util.ExitUtil: Exiting with status 1: java.io.IOException: The path component: '/var/lib/hadoop-hdfs' in '/var/lib/hadoop-hdfs/dn_socket' has permissions 0755 uid 993 and gid 991. It is not protected because it is owned by a user who is not root and not the effective user: '0'. This might help: 'chown root /var/lib/hadoop-hdfs' or 'chown 0 /var/lib/hadoop-hdfs'. For more information: https://wiki.apache.org/hadoop/SocketPathSecurity
  • 解决办法: 由于前面的/var/lib/hadoop-hdfs的问题,需将其用户修改为root

  • # 三个节点都执行这个操作
    [root@node01 ~]#chown root /var/lib/hadoop-hdfs/
    [root@node02 ~]#chown root /var/lib/hadoop-hdfs/
    [root@node03 ~]#chown root /var/lib/hadoop-hdfs/
    

4.namenode启动异常,日志显示

aused by: org.apache.hadoop.hdfs.server.namenode.RedundantEditLogInputStream$PrematureEOFException: got premature end-of-file at txid 27027; expected file to go up to 27152
	at org.apache.hadoop.hdfs.server.namenode.RedundantEditLogInputStream.nextOp(RedundantEditLogInputStream.java:197)
	at org.apache.hadoop.hdfs.server.namenode.EditLogInputStream.readOp(EditLogInputStream.java:85)
	at org.apache.hadoop.hdfs.server.namenode.EditLogInputStream.skipUntil(EditLogInputStream.java:151)
	at org.apache.hadoop.hdfs.server.namenode.RedundantEditLogInputStream.nextOp(RedundantEditLogInputStream.java:179)
	at org.apache.hadoop.hdfs.server.namenode.EditLogInputStream.readOp(EditLogInputStream.java:85)
	at org.apache.hadoop.hdfs.server.namenode.FSEditLogLoader.loadEditRecords(FSEditLogLoader.java:213)
	... 12 more

这个错误表明在处理 HDFS(Hadoop分布式文件系统)的编辑日志时遇到了意外的文件结尾。

要解决这个问题,您可以尝试以下方法:

  1. 检查文件完整性:检查导致错误的编辑日志文件是否完整。可能是由于文件损坏或丢失导致了预期范围之外的文件结尾。您可以尝试从备份中恢复丢失的文件或使用其他副本。

  2. 恢复缺失的日志段:如果确定存在缺失的日志段,您可以尝试使用辅助工具(如hdfs oiv命令)来恢复缺失的事务日志。具体步骤可以参考 HDFS 文档和社区支持资源。

  3. 恢复备份:如果有可用的完整备份,您可以尝试将备份数据还原到新的文件系统中,并确保整个过程符合数据一致性和正确性的要求。

  4. 寻求专业支持:如果以上方法无法解决问题,建议您咨询 Hadoop 或 HDFS 的专业支持团队,他们可以提供更具体和针对性的解决方案。

请注意,在进行任何更改或修复操作之前,请务必备份重要数据,并确保在测试环境中进行验证,以避免进一步数据丢失或其他潜在问题。

  • 经测试这个命令hdfs oiv不行

  • 看日志似乎是无法正常写入日志,namenode的元数据可能异常

  • # 使用这个命令修复元数据:hadoop namenode -recover,在出错的机器执行如下命令,一路按c或者y
    
  • 参考文章链接

5.impala启动出现空进程

  • 说明: 如果进程数启动不对,web页面打不开,去指定的日志目录.

    • jps时出现空白的进程或者process information unavailable

    • #解决办法(注意只删除后缀为impala的即可)
      [root@node01 bin]# rm -rf /tmp/hsperfdata_impala*
      [root@node02 bin]# rm -rf /tmp/hsperfdata_impala*
      [root@node03 bin]# rm -rf /tmp/hsperfdata_impala*
      

Haproxy负载均衡测试

impala-shell测试

  • 在安装了Haproxy服务的节点执行命令:注意端口25003是配置中绑定的路由端口

  • impala-shell -i node01:25003
    
  • 看到我们指定的node01 节点,Haproxy转发至node02执行SQL在这里插入图片描述

  • 每次提交SQL任务协调节点都不一样,自动轮询在这里插入图片描述

HDFS高可用集群中standBy 的NameNode无法启动—解决方案

在日常操作中发现自己的高可用hadoop集群,发现存在一台NamNode节点无法启动,但该节点上的DataNode仍可正常运行。其它的NameNode在正常运行。

  • 启动日志如下:

Error: Gap in transactions. Expected to be able to read up until at least txid 27896 but unable to find any edit logs containing txid 27711
java.io.IOException: Gap in transactions. Expected to be able to read up until at least txid 27896 but unable to find any edit logs containing txid 27711

问题可能是由多个NameNode上的元数据信息不一致,解决方法如下:

1、停止HDFS集群。

2、删除每个NameNode节点上的data、logs。(我是在刚搭好HDFS集群遇到的这个问题,所有data和logs中的数据可直接删除。如果data和logs中存在重要的不能删除的数据,还请将数据迁移保存至别处,或使用其它方法进行解决)。

3、在每一个JournalNode节点上,输入以下命令启动journalnode服务。(我是在每一台NameNode上启动的)。

hdfs --daemon start journalnode

4、在一个NameNode节点上,对其元数据进行修复

hadoop namenode -recover
# 如果hdfs上没有重要数据可以直接格式化namenode
//格式化
hdfs namenode -format
//启动namenode
hdfs --daemon start namenode

5、在其它每一个NameNode节点上执行下面这句话,同步<第4步那个NameNode节点>的元数据信息。

hdfs namenode -bootstrapStandby

6、其它NameNode节点都去执行下面这句话启动NameNode——除<第4步那个NameNode节点>。

hdfs --daemon start namenode

然后通过jps就可以查看NameNode已经启动了。

参考博客

  • https://blog.csdn.net/qq_42385284/article/details/88960678

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

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

相关文章

电商领域五强对比:Amazon、eBay、Wish、Target、Newegg,谁更胜一筹?(测评补单)

随着互联网的快速发展&#xff0c;电子商务成为了现代消费的主要方式。在众多电商平台中&#xff0c;Amazon、eBay、Wish、Target、Newegg是备受瞩目的电商巨头。它们在全球范围内拥有庞大的用户群体&#xff0c;提供了丰富的商品选择和便捷的购物体验。本文将对这些电商平台进…

Python网页信息爬取脚本

文章目录 获取整个页面所有源码筛选出源码中图片地址将图片下载到本地完整脚本 获取整个页面所有源码 该步骤可以用requests模块实现&#xff0c;分为下面步骤&#xff1a; 定义一个URL 地址; 发送HTTP 请求&#xff1b; 处理HTTP 响应。 下面代码定义了一个get_Html方法&…

jenkins中添加sonnarqube与OWASP Dependency-Check

jenkins jenkins离线插件地址&#xff1a; http://updates.jenkins-ci.org/download/plugins https://updates.jenkins.io/download/plugins https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins 国内linux 安装jdk11 文档&#xff1a; https://blog.51cto.co…

流量狂飙!暴涨2000万播放成B站创作标杆

“民以食为天”&#xff0c;美食品类内容是人们日常生活所需延伸出来的一个内容版块&#xff0c;用户浏览量大、众多内容创作者并驱争先&#xff0c;一直到今天&#xff0c;所有人有目共睹美食内容是如何在“内卷”。 饶是如此赛道拥挤的美食圈&#xff0c;也有众多创作者不断…

java字符串压缩和字符串解压

java字符串压缩和字符串解压 运行效果 java工具类 CompressUtil.java import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; import org.apache.commons.codec.binary.Base64;import java.io.BufferedReader; import java.io.Byte…

【LeetCode-中等题】116. 填充每个节点的下一个右侧节点指针

文章目录 题目方法一&#xff1a;直接让每层不是最后一个的节点指向此时队首元素方法二&#xff1a;用list记录下每层的节点 然后再做链接 题目 方法一&#xff1a;直接让每层不是最后一个的节点指向此时队首元素 class Solution {public Node connect(Node root) {if(root nu…

健身完全手册

文章目录 饮食完全手册摄入总量日内分配来源和配餐方法专题&错误 训练完全手册训练分化动作模式胸背手肩腿臀腹训练计划 减脂完全手册胸肌训练&#xff08;原理动作计划饮食&#xff09;健身训练的分化、动作、配重体态大师 饮食完全手册 参考视频&#xff1a;&#x1f4a…

什么是Web浏览器的缓存机制?如何控制和清除浏览器缓存?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ Web浏览器的缓存机制⭐ 浏览器缓存的工作原理⭐ 控制和清除浏览器缓存控制缓存 ⭐ 清除缓存⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xf…

YashanDB混合存储揭秘:行式存储如何为高效TP业务保驾护航(上)

上一篇文章《深度干货 | 揭秘YashanDB融合存储引擎》 https://mp.weixin.qq.com/s/yipJcEAH3fVA-_hnUvOiKA从存储结构、事务引擎、高可用等方面介绍了YashanDB存储引擎的整体架构。本篇为大家详细解读YashanDB行式存储技术。 背景 数据库底层组织数据的方式主要分为行式存储和…

成集云 | 金蝶云星空集成聚水潭ERP(金蝶云星空主管库存)| 解决方案

源系统成集云目标系统 方案介绍 金蝶云星空是金蝶软件&#xff08;中国&#xff09;有限公司研发的新一代战略性企业管理软件&#xff0c;致力于为企业提供端到端的供应链整体解决方案&#xff0c;它可以帮助企业构建敏捷供应链体系&#xff0c;降低供应链成本&#xff0c;提…

The existence and uniqueness of weak solution

See https://zhuanlan.zhihu.com/p/67522044 https://math.stackexchange.com/questions/1213260/what-is-a-good-definition-of-a-weak-solution

「聊设计模式」之模板方法模式(Template Method)

&#x1f3c6;本文收录于《聊设计模式》专栏&#xff0c;专门攻坚指数级提升&#xff0c;助你一臂之力&#xff0c;带你早日登顶&#x1f680;&#xff0c;欢迎持续关注&&收藏&&订阅&#xff01; 前言 在软件开发中&#xff0c;设计模式是经典的解决方案&#…

广州某机械制造企业生产工序管理系统解决方案

RFID工序管理解决方案在生产工序中引入RFID技术&#xff0c;对生产工序的构件拼装、焊接、打磨后检测、打砂油漆后检测、构件拟装读取确认、项目管理人员收货确认等各个生产环节的数据进行自动化的数据采集&#xff0c;保证生产管理各个作业环节数据输入的效率和准确性&#xf…

如何防止数据库泄露,保障个人信息安全题

在数字化时代&#xff0c;个人信息安全和数据库安全至关重要。为了防止数据库泄露&#xff0c;保障个人信息安全&#xff0c;以下安策带来的一些建议&#xff1a; 1.强化密码管理 密码是保护个人信息安全的第一道防线。确保使用复杂且独特的密码&#xff0c;避免使用容易猜测或…

二分与前缀和

目录 &#x1f348;前言 ❤二分 &#x1f339;二分 &#x1f33c;数的范围 &#x1f33c;数的三次方根 &#x1f33c;特殊数字 &#x1f33c;机器人跳跃问题 &#x1f33c;四平方和 &#x1f33c;分巧克力 &#x1f339;前缀和 &#x1f33c;前缀和 &#x1f33c;子…

html form表单高级用法

场景&#xff1a;想单纯使用表单内置的api完成提交&#xff0c;不使用js代码 代码如下&#xff1a; <form name"myForm" action"http://localhost:13734/form" method"post"><label>用户名<input type"text" name&qu…

SecureCRT SSH与FTP连接中文乱码

1、首先要保证服务端环境变量是UTF-8编码的 LANG”zh_CN.UTF-8″ 2、会话里面配置好字符编码&#xff1a;UTF-8 SSH会话的窗口就可以正常显示中文了&#xff0c;效果如下 3、打开FTP或者SFTP时进行文件传输时&#xff0c;列表窗口里面还是乱码&#xff0c;需要把SecureCRT安…

BENTLY 350015 127610-01数字量输入模块

数字输入功能&#xff1a; BENTLY 350015 127610-01模块通常用于监测和采集数字输入信号&#xff0c;例如开关状态、传感器状态等。 多通道&#xff1a; 这些模块通常具有多个输入通道&#xff0c;允许同时监测多个数字输入信号。 高精度&#xff1a; BENTLY 350015 127610-0…

四维轻云平台倾斜模型三种加载方式及单体化操作介绍

为了优化倾斜模型浏览效果&#xff0c;「四维轻云」v1.4.1针对倾斜模型新增了三种加载方式&#xff1b;此外&#xff0c;平台还增加了单体化等功能。但很多用户还不会使用这些功能&#xff0c;小编就来向大家介绍一些如何设置倾斜模型的三种加载方式和单体化操作。 一、倾斜模…

爬虫技术对携程网旅游景点和酒店信息的数据挖掘和分析应用

导语 爬虫技术是一种通过网络爬取目标网站的数据并进行分析的技术&#xff0c;它可以用于各种领域&#xff0c;如电子商务、社交媒体、新闻、教育等。本文将介绍如何使用爬虫技术对携程网旅游景点和酒店信息进行数据挖掘和分析&#xff0c;以及如何利用Selenium库和代理IP技术…