本文利用云服务器对大数据平台进行环境部署,包含:服务器使用、环境准备、Hadoop集群完全分布式安装、Zookeeper集群完全分布式安装、HBase完全分布式安装、Hive、Scala、Spark、Sqoop、Flume的安装。如有错误还望指出。
目录
一、服务器使用
二、环境准备
三、Hadoop3.1.1 集群环境安装
四、Zookeeper 集群安装部署
五、Hbase 完全分布式安装
六、Hive安装
七、Scala安装
八、Spark安装
九、Sqoop安装
十、flume安装
阿里云服务器,百度云服务器,腾讯云服务器。学生购买会有优惠,但只限一台机器。我用的学生优惠分别在三个平台各买了一台云主机来搭建大数据环境。
1、 阿里云(centos7.3)
47.101.62.158公
172.19.46.110私
2、百度云(centos7.3)
180.76.96.39 公
192.168.0.4私
3、腾讯云(centos7.3)
132.232.131.91 公
172.27.0.13 私
4、安全组ssh端口开放
使用服务器这里是关键。服务器如果在各网页界面去操作会效率很低,用Xshell或者putty可以远程连接服务器进行操作。这样就需要设置各服务器安全组打开ssh的22端口,然后进行远程连接。
OS:CentOS 7.0+
远程连接:Xshell
序号
主机
IP
主机名
用户名
密码
1
Baidu Cloud
180.76.96.39 公
192.168.0.4 私
Hadoop2
root
***
2
Alibaba Cloud
47.101.62.158 公
172.19.46.110 私
Hadoop1
root
***
3
Tencent Cloud
132.232.131.91 公
172.27.0.13 私
Hadoop3
root
***
Package:
Welcome to The Apache Software Foundation!(Apache官网)
Index of /apache
Hadoop集群安装(伪|全)
https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.1.1/hadoop-3.1.1.tar.gz
JDK安装
Unauthorized Request
如果用wget命令下载会出问题:博客:https://blog.csdn.net/weixin_42039699/article/details/82936624
MySQL安装
https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.41-linux-glibc2.12-x86_64.tar.gz
https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.47.tar.gz
Pig安装
https://mirrors.tuna.tsinghua.edu.cn/apache/pig/pig-0.17.0/pig-0.17.0.tar.gz
Hive安装
https://mirrors.tuna.tsinghua.edu.cn/apache/hive/stable-2/apache-hive-2.3.3-bin.tar.gz
HBase安装
https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/1.2.7/hbase-1.2.7-bin.tar.gz
Zookeeper集群安装
https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
Sqoop安装
Apache Sqoop - Apache Attic
Spark安装
https://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-2.3.1/spark-2.3.1-bin-hadoop2.7.tgz
Flume安装
https://mirrors.tuna.tsinghua.edu.cn/apache/flume/stable/apache-flume-1.8.0-bin.tar.gz
Storm安装
https://mirrors.tuna.tsinghua.edu.cn/apache/storm/apache-storm-1.2.2/apache-storm-1.2.2.tar.gz
设备:
实验设备包括 3 台服务器(CentOS7.0+)
实验所需安装包
步骤:
1.基础环境准备
1.1 集群规划
序号
主机
IP
主机名
用户名
密码
1
Baidu Cloud
180.76.96.39 公
192.168.0.4 私
Hadoop2
root
***
2
Alibaba Cloud
47.101.62.158 公
172.19.46.110 私
Hadoop1
root
***
3
Tencent Cloud
132.232.131.91 公
172.27.0.13 私
Hadoop3
root
***
1.2 系统准备
3台服务器(CentOS7.0+)
软件安装包存放于tgz目录下:
1.3 网络配置(虚拟机配置,云服务器跳过 )
为每个 Hadoop 主机配置相应的 IP 地址,每台的操作方法相同。IP 地址根据
实验环境进行配置,如果实验环境使用的是动态 IP 地址则可以跳过网络配置部分,进入下一步操作。
1.3.1 修改网络配置文件
1、首先,确保在 root 用户下进行操作。通过 vi 命令修改网络配置文件
[root@localhost ~]#
vi /etc/sysconfig/network-scripts/ifcfg-eth0
2、然后按 i 键进入编辑模式,我们需要将其中的 BOOTPROTO=dhcp 改为BOOTPROTO=static 意思是设置为静态 IP,将 ONBOOT=no 改为 ONBOOT=yes 意思是将网卡设置 为开机启用,同时在文字下方添加如下内容:
IPADDR= #静态 IP
GATEWAY= #默认网关
NETMASK= #子网掩码
DNS1= #DNS 配置
3、修改完成以后按 Esc 键退出编辑模式,按 Shift + : 输入 wq 进行保存并退出!修改好的配置截图。
1.3.2 重启网络服务
通过 service network restart 重启网络服务,使修改的配置生效
[root@localhost ~]# service network restart
1.3.3 查看配置是否修改成功
通过 ifconfig 命令来查看当前的 IP 地址信息
通过上面的操作以后分别将三台 hadoop 主机的配置改为 :
hadoop1 IP,hadoop2 IP,hadoop3 IP
1.4 关闭防火墙
三台 hadoop 主机都需要操作关闭防火墙
1、首先,输入 service iptables stop 命令停止防火墙的运行,再通过输入
chkconfig iptables off 命令关闭防火墙开机运行
2、执行命令如下:
[root@localhost ~]# service iptables stop
[root@localhost ~]# chkconfig iptables off
查看防火墙状态:
[root@localhost ~]# service iptables status
iptables: Firewall is not running.
注意:
CentOS 7.0+默认使用的是firewall作为防火墙
关闭并禁止firewall开机启动:
停止
systemctl stop firewalld.service
禁止开机启动
systemctl disable firewalld.service
启动/重启Firewalld
#systemctl start firewalld.service
#systemctl restart firewalld.service
开机启动/关闭开机启动
#systemctl enable firewalld.service
#systemctl disable firewalld.service
查看状态
#firewall-cmd --state
开放端口:云主机开放全部端口比较危险,容易被挖矿程序占CPU,建议需要什么端口打开什么。
firewall-cmd --permanent --zone=public --add-port=10-50010/tcp
firewall-cmd --permanent --zone=public --add-port=10-50010/udp
firewall-cmd --reloa
1.5 修改主机名称
修改主机名称目的是为了方便管理,将第一台 hadoop 主机的名称改为 hadoop1,
第二台改为 hadoop2,第三台改为 hadoop3。在三台 hadoop 主机上按下面的方法
修改每台的主机名称
1、首先,确保在 root 用户下进行操作。[root@localhost ~]# vi /etc/sysconfig/network
2、然后按 i 键进入编辑模式,将 HOSTNAME=localhost 改为 HOSTNAME=hadoop1
也就是将该机器名称改为 hadoop1。修改完成后需要输入 reboot 命令重启生效
重启命令:
[root@localhost ~]# reboot
查看当前主机名命令:
[root@localhost ~]# hostname
1.6 修改 hosts 文件
每台 hadoop 主机都加入相同的 hosts 主机记录
1、打开 hosts 文件
[root@hadoop1 ~]# vim /etc/hosts
2、在第三行添加下面的参数
IP hadoop1
IP hadoop2
IP hadoop3
云服务器搭建Hadoop完全分布式hosts配置关键:
在Master服务器上,要将自己的ip设置成内网ip,而将另一台Slave服务器的ip设置成外网ip
同样的在Slave服务器上,要将自己的ip设置成内网ip,而降另一台Master服务器的ip设置成外网ip
1.7时钟同步命令
ntpdate cn.pool.ntp.org
1.8 配置 SSH 免密码登录
hadoop 在执行配置过程中,master 需要对 salves 进行操作,所以我们需要在 hadoop1 节点配置 ssh 免密码登录 hadoop2、hadoop3.在 hadoop1 主机上执行以下的命令:
1、进入 root 管理员目录,执行 ssh-keygen -t rsa 一直回车生成密钥
[root@hadoop1 ~]# cd ~
[root@hadoop1 ~]# ssh-keygen -t rsa
2、进入 ~/.ssh 目录,将生成好的密钥同步到 hadoop2 和 hadoop3 中,在执行
ssh-copy-id 命令后需要输入对应 hadoop 主机的密码
[root@hadoop1 ~]# cd ~/.ssh
[root@hadoop1 .ssh]# ssh-copy-id hadoop2
[root@hadoop1 .ssh]# ssh-copy-id hadoop3
3、执行
[root@hadoop1 .ssh]# cat ~/.ssh/id_rsa.pub >~/.ssh/authorized_keys
4、验证 SSH 免密码登录是否成功
在 hadoop1 主机上可以不用输入密码即可远程访问 hadoop2 和 hadoop3,验证可以连接以后记得使用 exit 命令退出 ssh 连接
验证免密码登录 hadoop2:
[root@hadoop1 .ssh]# ssh hadoop2
退出 hadoop2 连接:
[root@hadoop2 ~]# exit
验证免密码登录 hadoop3:
[root@hadoop1 .ssh]# ssh hadoop3
[root@hadoop2 ~]# exit
退出 hadoop3 连接:
[root@hadoop3 ~]# exit
免密方式2:
hadoop1上执行:
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
ssh-add ~/.ssh/id_dsa
scp ~/.ssh/authorized_keys hadoop2
scp ~/.ssh/authorized_keys hadoop3
ssh-copy-id hadoop2
ssh-copy-id hadoop3
ssh hadoop2
ssh hadoop3
遇到问题:
重装openssh
1. 卸载
先查看openssh的相关包rpm -qa openssh* 然后依次卸载 安装 yum install -y
yum install -y openssh-7.4p1-16.el7.x86_64;yum install -y openssh-clients-7.4p1-16.el7.x86_64;yum install -y openssh-server-7.4p1-16.el7.x86_64
然后重新启动ssh服务
systemctl start sshd.service
通过ssh-keygen -t rsa和ssh-copy-id -i 操作后,免密登录依然需要输入密码问题解决:
目录文件的权限 .ssh父目录的权限是755,.ssh目录权限是700,authorized_keys文件 600
还是有问题。
目录的属主 如果上面方法还没有解决问题,那可能是.ssh父目录的属主存在问题。
这里发现.ssh父目录(..)的属主存在问题。
解决方法:
chown root:root /root
1.9 安装 JDK 环境
用wget命令直接下载的JDK,这是问题的根源。 去Oracle官网下载过jdk , 下载之前需要同意Oracle的安装协议,不然不能下载,但是用wget的方式,默认是不同意,虽然能下载下来,但是下载下来的文件会有问题,所以在Linux上解压一直失败。去官网下载好,然后传到服务器上,再解压就没有问题了。
使用Xshell本地传送JDK到服务器上:
三台 hadoop 主机都需要按照下面步骤安装 JDK 环境
注:安装所需要的软件都在tgz目录下
1、首先执行 java -version 查看 jdk 是否已经安装,如果看到以下内容则表示
已经安装了则可以跳过这一步骤,进入环境部署环节,另外如果版本低于 java version "1.8.0_181"则需要升级到对应版本
[root@hadoop1]# java -version
2、进入软件包位置,将 jdk 安装包复制到/usr/lib/
[root@hadoop1 ~]# cd ~/tgz/
[root@hadoop1 tgz]# cp jdk-8u181-linux-x64.tar.gz /usr/lib
3、进入/usr/lib 目录并解压 jdk-8u181-linux-x64.tar.gz
[root@hadoop1 tgz]# cd /usr/lib
[root@hadoop1 lib]# tar -zxvf jdk-8u181-linux-x64.tar.gz
4、修改环境变量
[root@hadoop1 lib]# vim /etc/profile
添加以下内容:
export JAVA_HOME=/usr/lib/jdk1.8
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
5、更新环境变量
[root@hadoop1 lib]# source /etc/profile
6、执行 java -version 查看是否安装或者更新成功
[root@hadoop1]# java -version
2.hadoop集群环境部署
注:安装所需要的软件都在tgz目录下
2.1 安装 hadoop3.1.1
我们通过在hadoop1进行安装hadoop,然后配置相应的配置文件,最后将hadooop所有文件同步到其它 hadooop 节点(hadoop2、hadoop3)。Hadoop 路径配置为/opt/hadoop-3.1.1
在 hadoop1 执行以下操作:
1、 首先进入软件包目录
[root@localhost ~]# cd /opt/tgz/
2、通过 cp 命令将 hadoop 安装包(hadoop-3.1.1.tar.gz)复制到/opt 目录下
[root@localhost tgz]# cp hadoop-3.1.1.tar.gz /opt/
3、 进入/opt 目录,并解压 hadoop-3.1.1.tar.gz 压缩包
[root@localhost tgz]# cd /opt/
[root@localhost opt]# tar -zxvf hadoop-3.1.1.tar.gz
2.2 配置 hadoop 配置文件
2.2.1 修改 core-site.xml 配置文件
通过 vi 命令修改 core-site.xml 配置文件,在
中间添加以下命令,fs.defaultFS 是用来定义 HDFS 的默认名
称节点路径。就是我们将来访问 HDFS 文件时,如果没有指定路径,就会联系这
里定义的路径的主机,去联系这台主机去寻找其路径。
1、打开 core-site.xml 配置文件命令:
[root@hadoop1]# vim /opt/hadoop-3.1.1/etc/hadoop/core-site.xml
2、添加内容:
fs.defaultFS
hdfs://hadoop1:9000
hadoop.tmp.dir
/opt/hadoop-3.1.1/tmp
2.2.2 修改 hdfs-site.xml 配置文件
通过 vi 命令修改 hdfs-site.xml 配置文件,在
中间添加第 2 步的内容
1、打开 hdfs-site.xml 配置文件:
[root@hadoop1]# vim /opt/hadoop-3.1.1/etc/hadoop/hdfs-site.xml
2、添加内容:
dfs.replication
3
dfs.namenode.name.dir
file:///opt/hadoop-3.1.1/hdfs/name
dfs.datanode.data.dir
file:///opt/hadoop-3.1.1/hdfs/data
dfs.namenode.secondary.http-address
hadoop2:9001
2.2.3 修改 workers 配置文件
通过 vi 命令修改 workers 配置文件,将第一行的localhost改成hadoop1,并在第二行中加入 hadoop2 和 hadoop3
1、打开 workers 配置文件
[root@hadoop1]# vim /opt/hadoop-3.1.0/etc/hadoop/workers
2、添加内容
hadoop1
hadoop2
hadoop3
2.2.4 修改 mapred-site.xml 配置文件
通过 vi 命令修改 mapred-site.xml 配置文件,在
中间添加第 2 步的内容
1、打开 mapred-site.xml 配置文件命令:
[root@hadoop1]# vim /opt/hadoop-3.1.0/etc/hadoop/mapred-site.xml
2、添加内容
mapreduce.framework.name
yarn
mapreduce.application.classpath
/opt/hadoop-3.1.1/etc/hadoop,
/opt/hadoop-3.1.1/share/hadoop/common/*,
/opt/hadoop-3.1.1/share/hadoop/common/lib/*,
/opt/hadoop-3.1.1/share/hadoop/hdfs/*,
/opt/hadoop-3.1.1/share/hadoop/hdfs/lib/*,
/opt/hadoop-3.1.1/share/hadoop/mapreduce/*,
/opt/hadoop-3.1.1/share/hadoop/mapreduce/lib/*,
/opt/hadoop-3.1.1/share/hadoop/yarn/*,
/opt/hadoop-3.1.1/share/hadoop/yarn/lib/*
2.2.5 修改 yarn-site.xml 配置文件
通过 vi 命令修改 yarn-site.xml 配置文件,在
中间添加第 2 步的内容
1、打开 yarn-site.xml 配置文件命令:
[root@hadoop1]# vim /opt/hadoop-3.1.1/etc/hadoop/yarn-site.xml
2、添加内容
yarn.resourcemanager.hostname
hadoop1
yarn.nodemanager.aux-services
mapreduce_shuffle
取消yarn运行模式的运行内存检测,这样就算内存达不到要求也不会kill掉任务
yarn.nodemanager.pmem-check-enabled
false
yarn.nodemanager.vmem-check-enabled
false
2.2.6 修改 hadoop-env.sh 配置文件
通过 vi 命令修改 hadoop-env.sh 配置文件,在第二行中添加第 2 步的内容
1、打开 hadoop-env.sh 配置文件命令:
[root@hadoop1]# vim /opt/hadoop-3.1.1/etc/hadoop/hadoop-env.sh
2、添加内容
export JAVA_HOME=/usr/lib/jdk1.8
4、更新配置文件
[root@hadoop1 ~]# source /opt/hadoop-3.1.0/etc/hadoop/hadoop-env.sh
2.2.7 修改 start-dfs.sh 和 stop-dfs.sh 配置文件
1、打开 start-dfs.sh 配置文件,在第二行中添加以下命令
[root@localhost ~]# vi /opt/hadoop-3.1.1/sbin/start-dfs.sh
添加内容:
export HDFS_NAMENODE_SECURE_USER=root
export HDFS_DATANODE_SECURE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
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
2、打开 stop-dfs.sh 配置文件,在第二行中添加以下命令
[root@localhost ~]# vi /opt/hadoop-3.1.1/sbin/stop-dfs.sh
添加内容:
export HDFS_NAMENODE_SECURE_USER=root
export HDFS_DATANODE_SECURE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
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
2.2.8 修改 start-yarn.sh 和 stop-yarn.sh 配置文件
1、打开 start-yarn.sh 配置文件,在第二行中添加以下命令
[root@localhost ~]# vi /opt/hadoop-3.1.1/sbin/start-yarn.sh
添加内容:
export YARN_RESOURCEMANAGER_USER=root
export HADOOP_SECURE_DN_USER=root
export YARN_NODEMANAGER_USER=root
2、打开 stop-yarn.sh 配置文件,在第二行中添加以下命令
[root@localhost ~]# vi /opt/hadoop-3.1.1/sbin/stop-yarn.sh
添加内容:
export YARN_RESOURCEMANAGER_USER=root
export HADOOP_SECURE_DN_USER=root
export YARN_NODEMANAGER_USER=root
2.2.9 取消打印警告信息
由于系统预装的 glibc 库时 2.12 版本,而 hadoop3.1.0 期待的是 2.14 版本,所
以后期启动服务的时候会打印报警信息,我们可以配置取消打印警告信息
1、打开 log4j.properties 配置文件,在首行中添加第 2 步的内容
[root@hadoop1 ~]# vim /opt/hadoop-3.1.1/etc/hadoop/log4j.properties
2、添加内容
log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR
2.2.10 同步 hadoop1 配置到 hadoop2 和 hadoop3 中
1、同步已经配置好的 hadoop 文件到 hadoop2 上
[root@hadoop1 ~]# cd /opt/
[root@hadoop1 opt]# scp -r hadoop-3.1.1root@hadoop2:/opt/
2、同步已经配置好的 hadoop 文件到 hadoop3 上
[root@hadoop1 ~]# cd /opt/
[root@hadoop1 opt]# scp -r hadoop-3.1.0 root@hadoop3:/opt/
2.2.11 配置三台 hadoop 主机的 profile 文件
1、打开 profile 文件,在最后面添加第 2 步的参数内容
[root@hadoop1 ~]# vim /etc/profile
2、添加内容
#SET HADOOP
HADOOP_HOME=/opt/hadoop-3.1.1
PATH=$HADOOP_HOME/bin:$PATH
export HADOOP_HOME PATH
4、更新环境变量
[root@localhost ~]# source /etc/profile
[root@localhost ~]# source /opt/hadoop-3.1.0/etc/hadoop/hadoop-env.sh
2.3 格式化 HDFS 文件系统
在 hadoop1 上通过 hdfs namenode -format 命令来格式化 HDFS 文件系统
[root@hadoop1 ~]# hdfs namenode -format
表示格式化 HDFS 文件系统完成
3.启动集群
3.1 启动集群
1、启动 hadoop 集群验证是否能正常启动,进入到/opt/hadoop-3.1.1/sbin/目
录下通过./start-all.sh 命令执行启动
[root@hadoop1 ~]# cd /opt/hadoop-3.1.1/sbin/
[root@hadoop1 sbin]# ./start-all.sh
2、在各 hadoop 节点上执行 jps 命令查看 hadoop 进程
[root@hadoop1 ~]# jps
3、通过 web 访问 HDFS 文件系统和 yarn
可以通过以下链接访问 hdfs 和 yarn
公网ip:8088或ip:9870
http://47.101.62.158:8088/cluster
http://47.101.62.158:9870
1.基础环境准备
2.环境部署
2.1 安装 zookeeper3.4.10
2.1.1 首先进入软件包目录
[root@hadoop1 ~]# cd tgz/
2.1.2 把 zookeeper 安装包(zookeeper-3.4.10.tar.gz)解压到/opt 目录下
[root@hadoop1 tgz]# tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/
2.1.3 解压完成后在环境变量中添加 Zookeeper 的安装路径,更新配置文件,使变量生效。
[root@hadoop1 tgz]# vi /etc/profile
添加以下内容:
#SET ZOOKEEPER
export ZOOKEEPER_HOME=/opt/zookeeper-3.4.10
export PATH=$PATH:$ZOOKEEPER_HOME/bin
退出后执行 source /etc/profile 命令更新环境变量
[root@hadoop1 opt]# source /etc/profile
2.2 配置 zookeeper 配置文件
1、进入 zookeeper 配置文件目录:
[root@hadoop1]# cd /opt/zookeeper-3.4.10/conf
2、复制 zoo_sample.cfg 文件为 zoo.cfg
[root@hadoop1]# cp zoo_sample.cfg zoo.cfg
3、创建存放数据的文件夹:
[root@hadoop1 conf]# mkdir /opt/zookeeper-3.4.10/data
4、创建 myid 文件,并加入数字 0 (主节点为 0,从节点分别为 1,2)
[root@hadoop1 conf]# vi /opt/zookeeper-3.4.10/data/myid
5、修改 zoo.cfg 配置文件
[root@hadoop1 conf]# vi /opt/zookeeper-3.4.10/conf/zoo.cfg
将配置文件中 dataDir 的路径改为/opt/zookeeper-3.4.10/data
并在底部中加入以下参数:
server.0=hadoop1:2888:3888
server.1=hadoop2:2888:3888
server.2=hadoop3:2888:3888
zoo.cfg 各语句的含义
tickTime:服务器与客户端之间交互的基本时间单元(ms)
initLimit:允许 follower 连接并同步到 leader 的初始化时间,它以 tickTime
的倍数来表示。当超过设置倍数的 tickTime 时间,则连接失败
syncLimit:Leader 服务器与 follower 服务器之间信息同步允许的最大时间间
隔,如果超过次间隔,默认 follower 服务器与 leader 服务器之间断开链接
dataDir:保存 zookeeper 数据路径
clientPort:客户端访问 zookeeper 时经过服务器端时的端口号
2.2.2 文件同步
1、将 hadoop1 上配置好的 zookeeper 文件同步到 haoop2、hadoop3 节点上:
[root@hadoop1]# scp -r /opt/zookeeper-3.4.10/ root@hadoop2:/opt
[root@hadoop1]# scp -r /opt/zookeeper-3.4.10/ root@hadoop3:/opt
2、将 hadoop1 的环境变量同步到 haoop2、hadoop3 节点上::
[root@hadoop1]# scp -r /etc/profile/ root@hadoop2:/etc/profile
[root@hadoop1]# scp -r /etc/profile/ root@hadoop3:/etc/profile
3、在其它节点上使环境生效:
[root@hadoop2]# source /etc/profile
[root@hadoop3]# source /etc/profile
4、修改 hadoop2 和 hadoop3 上的 myid
在 hadoop2 上将 myid 修改为 1
命令如下:
[root@hadoop2]# vi /opt/zookeeper-3.4.10/data/myid
hadoop1 下的 myid:
hadoop2 下的 myid
hadoop3 下的 myid
启动 zookeeper 集群并测试
3.1 启动 zookeeper
1、分别启动 hadoop1、hadoop2、hadoop3 节点的 zookeeper 集群命令
[root@hadoop1]# zkServer.sh start
[root@hadoop2]# zkServer.sh start
[root@hadoop3]# zkServer.sh start
2、查看是否启动成功命令:
[root@hadoop1]# zkServer.sh status
问题:
1.执行zkServer.sh start 后显示:
JMX enabled by default Using config:/home/hadoop/app/zookeeper-3.4.5/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
2.jps后发现没有QuorumPeerMain进程
3.查看zookeeper-3.4.5/data下的zookeeper-3.4.5.out,如果提示 binding to port 0.0.0.0/0.0.0.0:2181
ERROR [main:QuorumPeerMain@89] - Unexpected exception, exiting abnormally java.net.BindException: Address already in use
说明2181端口被占用,通过netstat -nltp | grep 2181检查是否已被占用,如果有则把对应的进程kill掉(kill 进程的pid),然后再启动zookeeper
4..jps后发现有QuorumPeerMain进程,然后执行zkServer.sh status,如果显示:
JMX enabled by default Using config: /home/hadoop/app/zookeeper-3.4.5/bin/../conf/zoo.cfg Error contacting service. It is probably not running.
说明未启动成功,通过查看zookeeper-3.4.5.out,如果提示
Cannot open channel to 1 at election address hadoop05/10.37.129.105:3888 java.net.NoRouteToHostException: No route to host,说明无法连接远程电脑10.37.129.105:3888,很有可能开启了防火墙
通过sudo service iptables status检查,如果确实开启,则通过sudo service iptables stop将其关闭,最后再查看状态zkServer.sh status
此时,基本都能够正常启动了,提示:
JMX enabled by default Using config: /home/hadoop/app/zookeeper-3.4.5/bin/../conf/zoo.cfg Mode: leader(或follower)
#查看端口有没有被占用
netstat -ntpl | grep 端口号
Top查看进程
Kill -9 进程
1.1 解压安装包 hbase
1.1.1 首先进入软件包目录
[root@hadoop ~]# cd tgz/
1.1.2 解压安装压缩包 将 hbase 安装包(hbase-1.2.7-bin.tar.gz)解压缩到 /opt 目录下
[root@hadoop tgz]# tar -zxvf hbase-1.2.7-bin.tar.gz -C /opt
1.1.3 进入到/opt 目录
[root@hadoop ~]# cd /opt
1.1.4 将解压的安装包重命名
[root@hadoop ~]# mv hbase-1.2.7 /opt/hbase
1.1.5 配置环境变量 加入 hbase 的安装路径
[root@hadoop conf]# vi /etc/profile
在文件的最底部加入下面内容
export HBASE_HOME=/opt/hbase
export PATH=$PATH:$HBASE_HOME/bin
配置如图:
退出后执行 source /etc/profile 命令更新环境变量
[root@hadoop conf]# source /etc/profile
1.2:搭建 Hbase 伪分布模式
hadoop1
NameNode
DataNode
NodeManager
ResourceManager
SecondaryNameNode
HMaster
QuorumPeerMain
HRegionServer
1.2.1 按照上述 1.1 解压缩后进入到配置文件 conf 目录
[root@hadoop opt]# cd /opt/hbase/conf/
1.2.2 编辑 hbase-site.xml
[root@hadoop conf]# vi hbase-site.xml
添加内容
hbase.rootdir
hdfs://localhost:9000/hbase
hbase.cluster.distributed
true
配置参数说明:
hbase.rootdir:该参数制定了 HReion 服务器的位置,即数据存放的位置。主要端口
号要和 Hadoop 相应配置一致。
hbase.cluster.distributed:HBase 的运行模式。false 是单机模式,true 是分布式模式。
若为 false, HBase 和 Zookeeper 会运行在同一个 JVM 里面。默认为 false。
1.2.3 编辑 hbase-env.sh 设置 JAVA_HOME
[root@hadoop conf]# vi hbase-env.sh
修改 export JAVA_HOME=/usr/lib/jdk1.8/
修改后如下:
1.2.4 启动 hbase
进入到 hbase 的 bin 目录
[root@hadoop conf]# cd /opt/hbase/bin/
启动 hbase
[root@hadoop bin]# ./start-hbase.sh
1.3:搭建 Hbase 完全分布模式
序号 主机 角色 Ip 主机名 账户 密码
hadoop1
NameNode
ResourceManager
HMaster
QuorumPeerMain
hadoop2
DataNode
NodeManager
HRegionServer
QuorumPeerMain
hadoop3
NodeManager
DataNode
HRegionServer
QuorumPeerMain
1.3.1 完全配置好的 hadoop 集群(需要启动)
参考 hadoop 完全分布式搭建
1.3.2 完全配置好的 zookeeper 集群(需要启动)
参考 zookeeper 完全分布式搭建
1.3.3 按照上述 1.1 解压缩后进入到配置文件 conf 目录
[root@hadoop1 opt]# cd /opt/hbase/conf/
如上图:需要修改 hbase-site.xml、regionservers、hbase-env.sh 三个配置文件
1.3.4 编辑 hbase-site.xml
[root@hadoop1 conf]# vi hbase-site.xml
加入下面内容
hbase.rootdir
hdfs://hadoop1:9000/hbase
hbase.cluster.distributed
true
hbase.zookeeper.quorum
hadoop1,hadoop2,hadoop3
配置参数说明:
在上面的配置文件中,第一个属性指定本机的 hbase 的存储目录;第二个属性指定 hbase 的运行
模式,true 代表全分布模式;第三属性是关于 Zookeeper 集群的配置。我的 Zookeeper 安装在 hadoop1
和 hadoop2、hadoop3 上。
1.3.5 修改 regionservers
[root@hadoop1 conf]# vi regionservers
在 regionservers 文件中添加如下内容 (删除原来里面的 localhost)
hadoop2
hadoop3
1.3.7 编辑 hbase-env.sh 设置 JAVA_HOME
[root@hadoop conf]# vi hbase-env.sh
修改 export JAVA_HOME=/usr/lib/jdk1.8/
修改 export HBASE_MANAGES_ZK=false (使用我们自己搭建的 zookeeper 集群)
1.3.8 将在 hadoop1 上配置好的安装包分发到 hadoop2 和 hadoop3 上
scp -r /opt/hbase/ hadoop2:/opt
scp -r /opt/hbase/ hadoop3:/opt
1.3.9 启动 hbase 集群
在 hadoop1 上进入到 hbase 的 bin 目录
[root@hadoop conf]# cd /opt/hbase/bin/
启动 hbase
[root@hadoop bin]# ./start-hbase.sh
在每个节点上分别用 jps 查看进程
hadoop1 上 HMaster
hadoop2 上 HRegionServer
hadoop3 上 HRegionServer
2:Hbase 基本操作
2.1、Hbase Shell 命令
使用 hbase shell 命令来连接正在运行的 Hbase 实例 按照上述 1 步骤配置好环境变量
后可以直接在命令行输入 hbase shell 来启动 hbase
启动成功如下:
2.2:显示 HBase Shell 帮助文档
输入 help 并按 Enter 键,可以显示 HBase Shell 的基本使用信息
2.3:退出 HBase Shell
使用 quit 命令,退出 HBase Shell 并且断开和集群的连接,但此时 HBase 仍然在后台运
行,也可以直接 ctrl+c
2.4:查看 HBase 状态 直接输入 status 回车
3、hbase 数据定义(DDL)操作
3.1:创建新表
使用 create 命令来创建一个新的表。在创建的时候,必须指定表名和列族名。
create 'user', 'info '
3.2: 列举表信息
使用 list 命令
list 'user'
3.3:获取表描述
使用 describe 命令
describe 'user'
3.4:检查表是否存在
使用 exists 命令
exists 'user'
操作结果图如下:
3.5:删除表
删除表之前,先 disable 表,再使用 drop 命令实现删除表的功能
drop 'user'
操作结果图如下:
4、数据管理(DML)操作
4.1:在上述步骤 3 中删除了 user 表,重新创建一张 user 表
create 'user', 'info'
4.2:向表中插入数据
使用 put 命令,将数据插入表中:
put 'user', 'row1', 'info:a', 'value1'
4.3:一次性扫描全表数据
一种获取 HBase 数据的方法是扫描,使用 scan 命令来扫描表的数据。(可以限制扫描的
范围)
scan 'user'
4.4:获取一个行数据
使用 get 命令来获得某一行的数据:
get 'user', 'row1'
4.5:禁用一个表
如果你想要删除一个表或是修改它的设置,或者是其它的情况,都需要首先禁用该表。
使用 disable 命令禁用表,enable 命令重新启用表。
disable 'user'
enable 'user'
如下图所示:
6:删除数据
删除行中的某个列值
# 语法:delete
, , ,
delete 'user','rowkey001','info:a'
删除行
# 语法:deleteall
, , ,
deleteall 'user','row1'
删除表中的所有数据
# 语法: truncate
truncate 'user'
1.1首先进入软件包目录
[root@hadoop1 ~]# cd tgz/
1.2解压缩mysql到/usr/local目录
[root@hadoop1 haoodp-install]# tar -zxvf mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
1.3进入到/usr/local目录并重命名
[root@hadoop1 haoodp-install]# cd /usr/local/
[root@hadoop1 local]# mv mysql-5.6.40-linux-glibc2.12-x86_64 mysql
1.4添加组用户
[root@hadoop1 local]# groupadd mysql
添加用户mysql 到用户组mysql
[root@hadoop1 local]# useradd -g mysql mysql
1.5安装mysql
Centos7将默认数据库mysql替换成了Mariadb
[root@localhost ~]# rpm -qa|grep mariadb // 查询出来已安装的mariadb
[root@localhost ~]# rpm -e --nodeps 文件名 // 卸载mariadb,文件名为上述命令查询出来的文件
yum remove mariadb
rm -rf /etc/my.cnf
rm -rf /var/lib/mysql/
yum --setopt=tsflags=noscripts remove MariaDB-client.x86_64;
删除etc目录下的my.cnf
1.5.1进入到安装包目录
[root@hadoop1 local]# cd /usr/local/mysql
1.5.2创建data目录下mysql文件夹
[root@hadoop1 mysql]# mkdir ./data/mysql
cd data
chown -R mysql:mysql mysql
依赖问题:
yum install -y perl perl-devel autoconf
yum install -y libaio.so.1
yum remove libnuma.so.1
yum -y install numactl.x86_64
1.5.3授权并执行脚本
[root@hadoop1 mysql]# chown -R mysql:mysql ./
[root@hadoop1 mysql]# chown -R mysql:mysql /usr/local/mysql
[root@hadoop1 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data/mysql
如果报错进行如下操作yum install -y perl-Module-Install.noarch,然后在./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data/mysql
1.5.4复制mysql服务文件到/etc/init.d目录下并重命名
[root@hadoop1 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
1.5.5修改服务文件权限
[root@hadoop1 mysql]# chmod 777 /etc/init.d/mysqld
1.5.6复制mysql的配置文件并重命名
[root@hadoop1 mysql]# cp support-files/my-default.cnf /etc/my.cnf
1.5.7修改mysql启动脚本
[root@hadoop1 mysql]# vi /etc/init.d/mysqld
修改下面内容
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data/mysql
1.5.8配置环境变量 加入mysql的安装路径
[root@hadoop1 conf]# vi /etc/profile
在文件的最底部加入下面内容
export PATH=$PATH:/usr/local/mysql/bin
退出后执行source /etc/profile命令更新环境变量
[root@hadoop1 conf]# source /etc/profile
1.5.10给mysql添加远程登录
[root@hadoop1 mysql]# vi /etc/my.cnf
在[mysqld]下面加
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
server_id=1
socket=/tmp/mysql.sock
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
1.5.11初始化mysql
[root@hadoop1 mysql]# /usr/local/mysql/scripts/mysql_install_db --user=mysql
1.5.12启动mysql服务
[root@hadoop1 mysql]# service mysqld start
查看mysql服务状态
[root@hadoop1 ~]# service mysqld status
1.5.13登录mysql
[root@hadoop1 ~]# mysql -u root -p
第一次登录不需要密码,直接回车
1.5.14设置本机mysql用户名和密码
mysql> use mysql;
mysql> update user set password =password('root') where user ='root';
1.5.15添加远程登录用户
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
mysql>FLUSH PRIVILEGES;
1.5.14创建hive数据库,来存储hive元数据信息
mysql>create database hive;
可以直接Ctrl+c 退出mysql或者exit
2.安装Hive
2.1首先进入软件包目录
[root@hadoop ~]# cd tgz/
2.2解压安装压缩包 将hive安装包(apache-hive-2.3.3-bin.tar.gz)解压缩到/opt目录下
[root@hadoop tgz]# tar -zxvf apache-hive-2.3.3-bin.tar.gz -C /opt
2.3进入到/opt目录
[root@hadoop ~]# cd /opt
2.4将解压的安装包重命名
[root@hadoop opt]# mv apache-hive-2.3.3-bin hive
2.5配置环境变量 加入hive的安装路径
[root@hadoop conf]# vi /etc/profile
在文件的最底部加入下面内容
export HIVE_HOME=/opt/hive
export PATH=$HIVE_HOME/bin:$HIVE_HOME/conf:$PATH
退出后执行source /etc/profile命令更新环境变量
[root@hadoop conf]# source /etc/profile
2.6.配置hive
2.6.1 进入到hive的配置文件目录
[root@hadoop opt]# cd /opt/hive/conf/
2.6.2 复制hive-env.sh.template 一份并重命名为hive-env.sh
[root@hadoop conf]# cp hive-env.sh.template hive-env.sh
修改hive-env.sh,设置加入HADOOP_HOME=/opt/hadoop-3.1.1
[root@hadoop conf]# vi hive-env.sh
2.6.3 新建hive-site.xml
[root@hadoop conf]# vi hive-site.xml
需要在 hive-site.xml 文件中配置 MySQL 数据库连接信息 复制下面内容到新建文件中
javax.jdo.option.ConnectionURL
jdbc:mysql://localhost:3306/hive?characterEncoding=UTF-8
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
javax.jdo.option.ConnectionUserName
root
javax.jdo.option.ConnectionPassword
root
2.6.4 配置mysql的驱动 将mysql驱动放到hive安装路径的lib目录下
[root@hadoop1]# cp tgz/mysql-connector-java-5.1.47.jar /opt/hive/lib/
2.6.5 hive在启动前到进行元数据初始化
[root@hadoop1 conf]# schematool -dbType mysql -initSchema
看到schemaTool completed 则初始化完成
检测hive 是否成功 直接在命令行输入hive即可hive (需要hadoop安装并启动)
启动成功如下:
scala下载: https://www.scala-lang.org/download/
https://downloads.lightbend.com/scala/2.12.7/scala-2.12.7.tgz
解压到/opt下
vim /etc/profile
export PATH=$PATH:/opt/scala/bin
source /etc/profile
$ scala
安装前提
Java1.8 zookeeper hadoop Scala
集群规划
二 集群安装
1 解压缩
tar zxvf spark-2.3.1-bin-hadoop2.7.tgz -C /opt/
mv spark-2.3.1-bin-hadoop2.7 spark
2 修改配置文件
(1)进入配置文件所在目录cd /opt//spark/conf/
(2)复制spark-env.sh.template并重命名为spark-env.sh
cp spark-env.sh.template spark-env.sh
vi spark-env.sh
编辑并在文件末尾添加如下配置内容
export JAVA_HOME=/usr/lib/jdk1.8
#指定默认master的ip或主机名
export SPARK_MASTER_HOST=hadoop1
#指定master提交任务的默认端口为7077
export SPARK_MASTER_PORT=7077
#指定master节点的webui端口
export SPARK_MASTER_WEBUI_PORT=8080
#每个worker从节点能够支配的内存数
export SPARK_WORKER_MEMORY=1g
#允许Spark应用程序在计算机上使用的核心总数(默认值:所有可用核心)
export SPARK_WORKER_CORES=1
#每个worker从节点的实例(可选配置)
export SPARK_WORKER_INSTANCES=1
#指向包含Hadoop集群的(客户端)配置文件的目录,运行在Yarn上配置此项
export HADOOP_CONF_DIR=/opt/hadoop-3.1.1/etc/hadoop
#指定整个集群状态是通过zookeeper来维护的,包括集群恢复
export SPARK_DAEMON_JAVA_OPTS="
-Dspark.deploy.recoveryMode=ZOOKEEPER
-Dspark.deploy.zookeeper.url=hadoop1:2181,hadoop2:2181,hadoop3:2181
-Dspark.deploy.zookeeper.dir=/spark"
cd /opt/spark/conf
cp log4j.properties.template log4j.properties
Log4j.rootCategory=INFO, console修改为
Log4j.rootCategory=WARN, console
(3)复制slaves.template成slaves,并修改配置内容
cp slaves.template slaves
vi slaves
修改从节点
hadoop1
hadoop2
hadoop3
(4)将安装包分发给其他节点
修改hadoop2节点上conf/spark-env.sh配置的MasterIP为SPARK_MASTER_IP=hadoop2
修改hadoop3节点上conf/spark-env.sh配置的MasterIP为SPARK_MASTER_IP=hadoop3
3 配置环境变量
所有节点均要配置
vi /etc/profile
export SPARK_HOME=/opt/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HDFS_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
source /etc/profile
三 启动集群
1 启动zookeeper集群
所有zookeeper节点均要执行
zkServer.sh start
2 启动Hadoop集群
3 启动Spark集群
启动spark:启动master节点:sbin/start-master.sh 启动worker节点:sbin/start-slaves.sh
或者:sbin/start-all.sh
注意:备用master节点hadoop2,hadoop3需要手动启动
sbin/start-master.sh
4 查看进程
启动spark
cd /opt/spark/bin
./pyspark
./spark-shell
1.解压缩
tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /opt/
cd /opt/
重命名mv sqoop-1.4.7.bin__hadoop-2.6.0/ sqoop
2.修改环境变量vi /etc/profile
export SQOOP_HOME=/opt/sqoop
export PATH=$SQOOP_HOME/bin:$PATH
source /etc/profile
3.将MySQL的驱动拷贝到lib下
4.修改sqoop-env-template.sh,配置HADOOP_HOME、HBASE_HOME、HIVE_HOME路径
vim sqoop-env-template.sh
#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=
#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=
#set the path to where bin/hbase is available
export HBASE_HOME=
#Set the path to where bin/hive is available
export HIVE_HOME=
5.修改$SQOOP_HOME/bin/configure-sqoop
注释掉HCatalog,Accumulo检查(除非你准备使用HCatalog,Accumulo等HADOOP上的组件)
## Moved to be a runtime check in sqoop.
#if [ ! -d "${HCAT_HOME}" ]; then
# echo "Warning: $HCAT_HOME does not exist! HCatalog jobs willfail."
# echo 'Please set $HCAT_HOME to the root of your HCatalog installation.'
#fi
#if [ ! -d "${ACCUMULO_HOME}" ];then
# echo "Warning: $ACCUMULO_HOME does not exist! Accumulo imports willfail."
# echo 'Please set $ACCUMULO_HOME to the root of your Accumuloinstallation.'
#fi
执行:sqoop version
测试连接:显示mysql数据库列表:
sqoop list-databases --connect jdbc:mysql://ip:3306/ --username hive --password hive
显示数据库里所有表:
sqoop list-tables --connect jdbc:mysql://ip:3306/hive --username hive --password hive
环境
centos:7.3
JDK:1.8
Flume:1.8
一、Flume 安装
1、下载
wget http://mirrors.tuna.tsinghua.edu.cn/apache/flume/1.8.0/apache-flume-1.8.0-bin.tar.gz
2、解压
tar –zxvf apache-flume-1.8.0-bin.tar.gz
mv apache-flume-1.8.0-bin /usr/local/flume
3、设置环境变量
export FLUME_HOME=/opt/flume
export PATH=$FLUME_HOME/bin:$PATH
Source /etc/profile
4、配置java_home
cp flume-env.sh.template flume-env.sh
vim flume-env.sh
export JAVA_HOME=/usr/lib/jdk1.8
export HADOOP_HOME=/opt/hadoop-3.1.1
查看版本:flume-ng version
至此大数据环境平台基本搭建完成,各环节具体配置文件还需视情况而配。此文仅供参考,如有错误,望指出。感激不尽!
业务搭载离不了云服务器,选择合适的平台最重要!
从目前国内云计算市场的格局来看,国内云计算前三强分别是阿里云、腾讯云和华为云,阿里云、腾讯云作为背靠互联网平台的企业,更偏向于B端用户;华为与作为传统的通信巨头,更偏向于G端。
本人从事云计算相关工作至今已有多年,国内主流的云平台都接触过,包括他们的销售及技术团队,对各家的产品也小有了解,并且指导过数百家企业迁移上云,对云平台选择也有一定的发言权!
网上有很多评测,评测数据也五花八门,说谁好的都有,这个两篇博文分析汇总的非常详细,分享给大家,文档地址:
博文1:云服务器哪家好!阿里云、腾讯云、华为云的服务器配置及价格对比?
博文2:阿里云服务器突发型t6、n4、s6、c5、c6怎么选?和腾讯云服务器标准型s3、sn3ne、s4、s5、sa2相比哪家好?全面解析
如果是高并发,高IO业务场景,需要确定服务器规格,可让业务应用性能发挥到最佳,参考官方文档:
阿里云服务器规格:规格实例族 - 云服务器 ECS
腾讯云服务器规格:规格实例族 - 云服务器CVM
你可能感兴趣的:(腾讯云,服务器,云计算)
理解Gunicorn:Python WSGI服务器的基石
范范0825
ipython linux 运维
理解Gunicorn:PythonWSGI服务器的基石介绍Gunicorn,全称GreenUnicorn,是一个为PythonWSGI(WebServerGatewayInterface)应用设计的高效、轻量级HTTP服务器。作为PythonWeb应用部署的常用工具,Gunicorn以其高性能和易用性著称。本文将介绍Gunicorn的基本概念、安装和配置,帮助初学者快速上手。1.什么是Gunico
swagger访问路径
igotyback
swagger
Swagger2.x版本访问地址:http://{ip}:{port}/{context-path}/swagger-ui.html{ip}是你的服务器IP地址。{port}是你的应用服务端口,通常为8080。{context-path}是你的应用上下文路径,如果应用部署在根路径下,则为空。Swagger3.x版本对于Swagger3.x版本(也称为OpenAPI3)访问地址:http://{ip
高级编程--XML+socket练习题
masa010
java 开发语言
1.北京华北2114.8万人上海华东2,500万人广州华南1292.68万人成都华西1417万人(1)使用dom4j将信息存入xml中(2)读取信息,并打印控制台(3)添加一个city节点与子节点(4)使用socketTCP协议编写服务端与客户端,客户端输入城市ID,服务器响应相应城市信息(5)使用socketTCP协议编写服务端与客户端,客户端要求用户输入city对象,服务端接收并使用dom4j
腾讯云技术深度探索:构建高效云原生微服务架构
我的运维人生
云原生 架构 腾讯云 运维开发 技术共享
腾讯云技术深度探索:构建高效云原生微服务架构在当今快速发展的技术环境中,云原生技术已成为企业数字化转型的关键驱动力。腾讯云作为行业领先的云服务提供商,不断推出创新的产品和技术,助力企业构建高效、可扩展的云原生微服务架构。本文将深入探讨腾讯云在微服务领域的最新进展,并通过一个实际案例展示如何在腾讯云平台上构建云原生应用。腾讯云微服务架构概览腾讯云微服务架构基于云原生理念,旨在帮助企业快速实现应用的容
PHP环境搭建详细教程
好看资源平台
前端 php
PHP是一个流行的服务器端脚本语言,广泛用于Web开发。为了使PHP能够在本地或服务器上运行,我们需要搭建一个合适的PHP环境。本教程将结合最新资料,介绍在不同操作系统上搭建PHP开发环境的多种方法,包括Windows、macOS和Linux系统的安装步骤,以及本地和Docker环境的配置。1.PHP环境搭建概述PHP环境的搭建主要分为以下几类:集成开发环境:例如XAMPP、WAMP、MAMP,这
使用 FinalShell 进行远程连接(ssh 远程连接 Linux 服务器)
编程经验分享
开发工具 服务器 ssh linux
目录前言基本使用教程新建远程连接连接主机自定义命令路由追踪前言后端开发,必然需要和服务器打交道,部署应用,排查问题,查看运行日志等等。一般服务器都是集中部署在机房中,也有一些直接是云服务器,总而言之,程序员不可能直接和服务器直接操作,一般都是通过ssh连接来登录服务器。刚接触远程连接时,使用的是XSHELL来远程连接服务器,连接上就能够操作远程服务器了,但是仅用XSHELL并没有上传下载文件的功能
git - Webhook让部署自动化
大猪大猪
我们现在有一个需求,将项目打包上传到gitlab或者github后,程序能自动部署,不用手动地去服务器中进行项目更新并运行,如何做到?这里我们可以使用gitlab与github的挂钩,挂钩的原理就是,每当我们有请求到gitlab与github服务器时,这时他俩会根据我们配置的挂钩地扯进行访问,webhook挂钩程序会一直监听着某个端口请求,一但收到他们发过来的请求,这时就知道用户有请求提交了,这时
Linux查看服务器日志
TPBoreas
运维 linux 运维
一、tail这个是我最常用的一种查看方式用法如下:tail-n10test.log查询日志尾部最后10行的日志;tail-n+10test.log查询10行之后的所有日志;tail-fn10test.log循环实时查看最后1000行记录(最常用的)一般还会配合着grep用,(实时抓包)例如:tail-fn1000test.log|grep'关键字'(动态抓包)tail-fn1000test.log
Python多线程实现大规模数据集高效转移
sand&wich
网络 python 服务器
背景在处理大规模数据集时,通常需要在不同存储设备、不同服务器或文件夹之间高效地传输数据。如果采用单线程传输方式,当数据量非常大时,整个过程会非常耗时。因此,通过多线程并行处理可以大幅提升数据传输效率。本文将分享一个基于Python多线程实现的高效数据传输工具,通过遍历源文件夹中的所有文件,将它们移动到目标文件夹。工具和库这个数据集转移工具主要依赖于以下Python标准库:os:用于文件系统操作,如
笋丁网页自动回复机器人V3.0.0免授权版源码
希希分享
软希网58soho_cn 源码资源 笋丁网页自动回复机器人
笋丁网页机器人一款可设置自动回复,默认消息,调用自定义api接口的网页机器人。此程序后端语言使用Golang,内存占用最高不超过30MB,1H1G服务器流畅运行。仅支持Linux服务器部署,不支持虚拟主机,请悉知!使用自定义api功能需要有一定的建站基础。源码下载:https://download.csdn.net/download/m0_66047725/89754250更多资源下载:关注我。安
深入浅出 -- 系统架构之负载均衡Nginx的性能优化
xiaoli8748_软件开发
系统架构 系统架构 负载均衡 nginx
一、Nginx性能优化到这里文章的篇幅较长了,最后再来聊一下关于Nginx的性能优化,主要就简单说说收益最高的几个优化项,在这块就不再展开叙述了,毕竟影响性能都有多方面原因导致的,比如网络、服务器硬件、操作系统、后端服务、程序自身、数据库服务等,对于性能调优比较感兴趣的可以参考之前《JVM性能调优》中的调优思想。优化一:打开长连接配置通常Nginx作为代理服务,负责分发客户端的请求,那么建议开启H
#千锋逆战班 郭燕 学习的一天开启
郭千岁呗
在千锋"逆战"学习云计算第17天加油努力会有好结果复习昨天知识中国加油!武汉加油!千峰加油!我自己加油!
最简单将静态网页挂载到服务器上(不用nginx)
全能全知者
服务器 nginx 运维 前端 html 笔记
最简单将静态网页挂载到服务器上(不用nginx)如果随便弄个静态网页挂在服务器都要用nignx就太麻烦了,所以直接使用Apache来搭建一些简单前端静态网页会相对方便很多检查Web服务器服务状态:sudosystemctlstatushttpd#ApacheWeb服务器如果发现没有安装web服务器:安装Apache:sudoyuminstallhttpd启动Apache:sudosystemctl
阿里云服务器4核8G配置购买及价格类文章汇总(10篇)
阿里云最新优惠和活动汇总
阿里云服务器4核8G配置如何购买?价格是多少?4核8G配置的阿里云服务器可以通过云服务器产品页购买也可以通过阿里云活动去下单购买,一般通过活动购买的用户比较多,但是不同实例规格的阿里云服务器价格不一样,带宽不同价格也不一样,本文为大家汇总了10篇关于阿里云服务器4核8G配置购买教程文章和价格类文章,分为购买类文章和价格类文章,以供大家参考如何购买阿里云服务器4核8G配置和最新优惠价格是多少。阿里云
windows下python opencv ffmpeg读取摄像头实现rtsp推流 拉流
图像处理大大大大大牛啊
opencv实战代码讲解 视觉图像项目 windows python opencv
windows下pythonopencvffmpeg读取摄像头实现rtsp推流拉流整体流程1.下载所需文件1.1下载rtsp推流服务器1.2下载ffmpeg2.开启RTSP服务器3.opencv读取摄像头并调用ffmpeg进行推流4.opencv进行拉流5.opencv异步拉流整体流程1.下载所需文件1.1下载rtsp推流服务器下载RTSP服务器下载页面https://github.com/blu
NPM私库搭建-verdaccio(Linux)
Beam007
npm linux 前端
1、安装nodelinux服务器安装nodea)、官网下载所需的node版本https://nodejs.org/dist/v14.21.0/b)、解压安装包若下载的是xxx.tar.xz文件,解压命令为tar-xvfxxx.tar.xzc)、修改环境变量修改:/etc/profile文件#SETPATHFORNODEJSexportNODE_HOME=NODEJS解压安装的路径exportPAT
信息系统安全相关概念(上)
YuanDaima2048
课程笔记 基础概念 安全 信息安全 笔记
文章总览:YuanDaiMa2048博客文章总览下篇:信息系统安全相关概念(下)信息系统安全相关概念[上]信息系统概述信息系统信息系统架构信息系统发展趋势:信息系统日趋大型化、复杂化信息系统面临的安全威胁信息系统安全架构设计--以云计算为例信息系统安全需求及安全策略自主访问控制策略DAC强制访问控制策略MAC信息系统概述信息系统用于收集、存储和处理数据以及传递信息、知识和数字产品的一组集成组件。几
[实验室服务器使用]使用VSCode、PyCharm、MobaXterm和CMD连接远程服务器
YuanDaima2048
工具使用 服务器 vscode pycharm cmd 代理模式 机器学习 实验
文章总览:YuanDaiMa2048博客文章总览实验室服务器使用:使用VSCode、PyCharm、MobaXterm和CMD连接远程服务器在进行实验室工作时,远程连接服务器是常见的需求之一。本篇文章根据个人的一些使用介绍使用不同工具连接服务器的方法,并提供优化功能,使服务器能够使用本机代理的说明。准备服务器账号信息Host(主机):10.XXX.XX.XXXPort(端口):[SSHPort]U
【2023年】云计算金砖牛刀小试6
geekgold
云计算 服务器 网络 kubernetes 容器
第一套【任务1】私有云服务搭建[10分]【题目1】基础环境配置[0.5分]使用提供的用户名密码,登录提供的OpenStack私有云平台,在当前租户下,使用CentOS7.9镜像,创建两台云主机,云主机类型使用4vCPU/12G/100G_50G类型。当前租户下默认存在一张网卡,自行创建第二张网卡并连接至controller和compute节点(第二张网卡的网段为10.10.X.0/24,X为工位号
L1 L2 L3 缓存
京天不下雨
windows 缓存 windows
L1L2L3缓存L1Cache(一级bai缓存)是CPU第一层高速缓存,分为数据缓存和指令缓存。du内置的zhiL1高速缓存的容量和结构对daoCPU的性能影响较大,不过高速缓冲存储器均由静态RAM组成,结构较复杂,在CPU管芯面积不能太大的情况下,L1级高速缓存的容量不可能做得太大。一般服务器CPU的L1缓存的容量通常在32—4096KB。L2由于L1级高速缓存容量的限制,为了再次提高CPU的运
golang实现从服务器下载文件到本地指定目录
余生逆风飞翔
golang 服务器 开发语言
一、连接服务器,采用sftp连接模式packagemiddlewaresimport("fmt""time""github.com/pkg/sftp""golang.org/x/crypto/ssh")//建立服务器连接funcConnect(user,password,hoststring,portint)(*sftp.Client,error){var(auth[]ssh.AuthMethod
鲲鹏 ARM 架构 麒麟 Lylin v10 安装 Nginx (离线)
焚木灵
arm开发 架构 nginx 服务器
最近做一个银行的项目,银行的服务器是鲲鹏ARM架构的服务器,并且是麒麟v10的系统,这里记录一下在无法访问外网安装Nginx的方法。其他文章:鲲鹏ARM架构麒麟Lylinv10安装Mysql8.3(离线)-CSDN博客鲲鹏ARM架构麒麟Lylinv10安装Node和NVM(离线)-CSDN博客鲲鹏ARM架构麒麟Lylinv10安装Pm2(离线)-CSDN博客鲲鹏ARM架构麒麟Lylinv10安装P
Nginx之代理模块 ngx_http_proxy_module
途径日暮不赏丶
nginx nginx
正向代理正向代理是指位于客户机(A)和站点服务器(B)之间的代理服务器(C),为了从站点服务器(B)获取资源,客户机(A)向代理服务器(C)发送请求并指定站点服务器(B),然后代理服务器(C)向站点服务器(B)转交请求并将获取的资源返回给客户机(A)。上述这样的代理模式称为正向代理,正向代理最大的特点:客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户
导致格式错误的 Lambda 代理响应的原因以及如何修复它
zqhdz米时空
汇编
当人们尝试使用AWSAPIGateway和AWSLambda构建无服务器应用程序时,经常出现的一个问题是_由于配置错误而执行失败:Lambda代理响应格式错误。_没有什么比通用错误消息更糟糕的了,它们不会告诉您解决问题所需的任何内容,对吧?AWS并不是以其错误消息设计而闻名,如果甚至可以这样称呼它的话,更不用说为您提供解决问题的方法了。那么如何修复这个Lambda错误以及是什么原因造成的呢?花椒壳
网关gateway学习总结
猪猪365
学习总结 学习总结
一微服务概述:微服务网关就是一个系统!通过暴露该微服务的网关系统,方便我们进行相关的鉴权,安全控制,日志的统一处理,易于监控的相关功能!实现微服务网关技术都有哪些呢?1nginx:nginx是一个高性能的http和反向代理web的服务器,同事也提供了IMAP/POP3/SMTP服务.他可以支撑5万并发链接,并且cpu,内存等资源消耗非常的低,运行非常的稳定!2Zuul:Zuul是Netflix公司
Nginx之ngx_http_proxy_connect_module模块
小米bb
Nginx nginx http 运维
近期由于项目需要使用到https正向代理,而nginx官方模块仅支持做http正向代理,一番百度学习后发现了该模块,故今日记录下此笔记供大家一起学习交流ngx_http_proxy_connect_module模块主要用于隧道SSL请求的代理服务器GitHub地址:http://www.github.com/chobits/ngx_http_proxy_connect_modulenginx配置:
Nginx:高性能的Web服务器与反向代理
张某布响丸辣
nginx 前端 服务器 java SpringBoot
在当今的互联网世界中,Web服务器的选择对于网站的性能、稳定性和安全性至关重要。Nginx(发音为“engineX”)凭借其卓越的性能、丰富的功能集和灵活的配置选项,成为了众多网站和应用程序的首选Web服务器和反向代理。本文将深入探讨Nginx的特点、应用场景、基本配置以及它如何助力你的Web项目。Nginx简介Nginx是一个开源的、高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/
Android shell 常用 debug 命令
晨春计
Audio debug android linux
目录1、查看版本2、am命令3、pm命令4、dumpsys命令5、sed命令6、log定位查看APK进程号7、log定位使用场景1、查看版本1.1、Android串口终端执行getpropro.build.version.release#获取Android版本uname-a#查看linux内核版本信息uname-r#单独查看内核版本1.2、linux服务器执行lsb_release-a#查看Lin
未来软件市场是怎么样的?做开发的生存空间如何?
cesske
软件需求
目录前言一、未来软件市场的发展趋势二、软件开发人员的生存空间前言未来软件市场是怎么样的?做开发的生存空间如何?一、未来软件市场的发展趋势技术趋势:人工智能与机器学习:随着技术的不断成熟,人工智能将在更多领域得到应用,如智能客服、自动驾驶、智能制造等,这将极大地推动软件市场的增长。云计算与大数据:云计算服务将继续普及,大数据技术的应用也将更加广泛。企业将更加依赖云计算和大数据来优化运营、提升效率,并
解决SDK Manager 中 没有 Support Library
木鱼wzh
1、直接修改SDK-MANAGER打开sdk-manager—->Tools—->options然后点击packages—->showobsoletepackages即可在最下面的Extras目录下找到推荐两个自己使用的镜像服务器:mirrors.neusoft.edu.cn端口80mirrors.dormforce.net端口802、去官网下载SupportLibrar点击这里进入官网进入百度云
C/C++Win32编程基础详解视频下载
择善Zach
编程 C++ Win32
课题视频:C/C++Win32编程基础详解
视频知识:win32窗口的创建
windows事件机制
主讲:择善Uncle老师
学习交流群:386620625
验证码:625
--
Guava Cache使用笔记
bylijinnan
java guava cache
1.Guava Cache的get/getIfPresent方法当参数为null时会抛空指针异常
我刚开始使用时还以为Guava Cache跟HashMap一样,get(null)返回null。
实际上Guava整体设计思想就是拒绝null的,很多地方都会执行com.google.common.base.Preconditions.checkNotNull的检查。
2.Guava
解决ora-01652无法通过128(在temp表空间中)
0624chenhong
oracle
解决ora-01652无法通过128(在temp表空间中)扩展temp段的过程
一个sql语句后,大约花了10分钟,好不容易有一个结果,但是报了一个ora-01652错误,查阅了oracle的错误代码说明:意思是指temp表空间无法自动扩展temp段。这种问题一般有两种原因:一是临时表空间空间太小,二是不能自动扩展。
分析过程:
既然是temp表空间有问题,那当
Struct在jsp标签
不懂事的小屁孩
struct
非UI标签介绍:
控制类标签:
1:程序流程控制标签 if elseif else
<s:if test="isUsed">
<span class="label label-success">True</span>
</
按对象属性排序
换个号韩国红果果
JavaScript 对象排序
利用JavaScript进行对象排序,根据用户的年龄排序展示
<script>
var bob={
name;bob,
age:30
}
var peter={
name;peter,
age:30
}
var amy={
name;amy,
age:24
}
var mike={
name;mike,
age:29
}
var john={
大数据分析让个性化的客户体验不再遥远
蓝儿唯美
数据分析
顾客通过多种渠道制造大量数据,企业则热衷于利用这些信息来实现更为个性化的体验。
分析公司Gartner表示,高级分析会成为客户服务的关键,但是大数据分析的采用目前仅局限于不到一成的企业。 挑战在于企业还在努力适应结构化数据,疲于根据自身的客户关系管理(CRM)系统部署有效的分析框架,以及集成不同的内外部信息源。
然而,面对顾客通过数字技术参与而产生的快速变化的信息,企业需要及时作出反应。要想实
java笔记4
a-john
java
操作符
1,使用java操作符
操作符接受一个或多个参数,并生成一个新值。参数的形式与普通的方法调用不用,但是效果是相同的。加号和一元的正号(+)、减号和一元的负号(-)、乘号(*)、除号(/)以及赋值号(=)的用法与其他编程语言类似。
操作符作用于操作数,生成一个新值。另外,有些操作符可能会改变操作数自身的
从裸机编程到嵌入式Linux编程思想的转变------分而治之:驱动和应用程序
aijuans
嵌入式学习
笔者学习嵌入式Linux也有一段时间了,很奇怪的是很多书讲驱动编程方面的知识,也有很多书将ARM9方面的知识,但是从以前51形式的(对寄存器直接操作,初始化芯片的功能模块)编程方法,和思维模式,变换为基于Linux操作系统编程,讲这个思想转变的书几乎没有,让初学者走了很多弯路,撞了很多难墙。
笔者因此写上自己的学习心得,希望能给和我一样转变
在springmvc中解决FastJson循环引用的问题
asialee
循环引用 fastjson
我们先来看一个例子:
package com.elong.bms;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
import co
ArrayAdapter和SimpleAdapter技术总结
百合不是茶
android SimpleAdapter ArrayAdapter 高级组件基础
ArrayAdapter比较简单,但它只能用于显示文字。而SimpleAdapter则有很强的扩展性,可以自定义出各种效果
ArrayAdapter;的数据可以是数组或者是队列
// 获得下拉框对象
AutoCompleteTextView textview = (AutoCompleteTextView) this
九封信
bijian1013
人生 励志
有时候,莫名的心情不好,不想和任何人说话,只想一个人静静的发呆。有时候,想一个人躲起来脆弱,不愿别人看到自己的伤口。有时候,走过熟悉的街角,看到熟悉的背影,突然想起一个人的脸。有时候,发现自己一夜之间就长大了。 2014,写给人
Linux下安装MySQL Web 管理工具phpMyAdmin
sunjing
PHP Install phpMyAdmin
PHP http://php.net/
phpMyAdmin http://www.phpmyadmin.net
Error compiling PHP on CentOS x64
一、安装Apache
请参阅http://billben.iteye.com/admin/blogs/1985244
二、安装依赖包
sudo yum install gd
分布式系统理论
bit1129
分布式
FLP
One famous theory in distributed computing, known as FLP after the authors Fischer, Lynch, and Patterson, proved that in a distributed system with asynchronous communication and process crashes,
ssh2整合(spring+struts2+hibernate)-附源码
白糖_
eclipse spring Hibernate mysql 项目管理
最近抽空又整理了一套ssh2框架,主要使用的技术如下:
spring做容器,管理了三层(dao,service,actioin)的对象
struts2实现与页面交互(MVC),自己做了一个异常拦截器,能拦截Action层抛出的异常
hibernate与数据库交互
BoneCp数据库连接池,据说比其它数据库连接池快20倍,仅仅是据说
MySql数据库
项目用eclipse
treetable bug记录
braveCS
table
// 插入子节点删除再插入时不能正常显示。修改:
//不知改后有没有错,先做个备忘
Tree.prototype.removeNode = function(node) {
// Recursively remove all descendants of +node+
this.unloadBranch(node);
// Remove
编程之美-电话号码对应英语单词
bylijinnan
java 算法 编程之美
import java.util.Arrays;
public class NumberToWord {
/**
* 编程之美 电话号码对应英语单词
* 题目:
* 手机上的拨号盘,每个数字都对应一些字母,比如2对应ABC,3对应DEF.........,8对应TUV,9对应WXYZ,
* 要求对一段数字,输出其代表的所有可能的字母组合
jquery ajax读书笔记
chengxuyuancsdn
jQuery ajax
1、jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()
JWFD工作流拓扑结构解析伪码描述算法
comsci
数据结构 算法 工作 活动 J#
对工作流拓扑结构解析感兴趣的朋友可以下载附件,或者下载JWFD的全部代码进行分析
/* 流程图拓扑结构解析伪码描述算法
public java.util.ArrayList DFS(String graphid, String stepid, int j)
oracle I/O 从属进程
daizj
oracle
I/O 从属进程
I/O从属进程用于为不支持异步I/O的系统或设备模拟异步I/O.例如,磁带设备(相当慢)就不支持异步I/O.通过使用I/O 从属进程,可以让磁带机模仿通常只为磁盘驱动器提供的功能。就好像支持真正的异步I/O 一样,写设备的进程(调用者)会收集大量数据,并交由写入器写出。数据成功地写出时,写入器(此时写入器是I/O 从属进程,而不是操作系统)会通知原来的调用者,调用者则会
高级排序:希尔排序
dieslrae
希尔排序
public void shellSort(int[] array){
int limit = 1;
int temp;
int index;
while(limit <= array.length/3){
limit = limit * 3 + 1;
初二下学期难记忆单词
dcj3sjt126com
english word
kitchen 厨房
cupboard 厨柜
salt 盐
sugar 糖
oil 油
fork 叉;餐叉
spoon 匙;调羹
chopsticks 筷子
cabbage 卷心菜;洋白菜
soup 汤
Italian 意大利的
Indian 印度的
workplace 工作场所
even 甚至;更
Italy 意大利
laugh 笑
m
Go语言使用MySQL数据库进行增删改查
dcj3sjt126com
mysql
目前Internet上流行的网站构架方式是LAMP,其中的M即MySQL, 作为数据库,MySQL以免费、开源、使用方便为优势成为了很多Web开发的后端数据库存储引擎。MySQL驱动Go中支持MySQL的驱动目前比较多,有如下几种,有些是支持database/sql标准,而有些是采用了自己的实现接口,常用的有如下几种:
http://code.google.c...o-mysql-dri
git命令
shuizhaosi888
git
---------------设置全局用户名:
git config --global user.name "HanShuliang" //设置用户名
git config --global user.email "
[email protected] " //设置邮箱
---------------查看环境配置
git config --li
qemu-kvm 网络 nat模式 (四)
haoningabc
kvm qemu
qemu-ifup-NAT
#!/bin/bash
BRIDGE=virbr0
NETWORK=192.168.122.0
GATEWAY=192.168.122.1
NETMASK=255.255.255.0
DHCPRANGE=192.168.122.2,192.168.122.254
TFTPROOT=
BOOTP=
function check_bridge()
不要让未来的你,讨厌现在的自己
jingjing0907
生活 奋斗 工作 梦想
故事one
23岁,他大学毕业,放弃了父母安排的稳定工作,独闯京城,在家小公司混个小职位,工作还算顺手,月薪三千,混了混,混走了一年的光阴。 24岁,有了女朋友,从二环12人的集体宿舍搬到香山民居,一间平房,二人世界,爱爱爱。偶然约三朋四友,打扑克搓麻将,日子快乐似神仙; 25岁,出了几次差,调了两次岗,薪水涨了不过百,生猛狂飙的物价让现实血淋淋,无力为心爱银儿购件大牌
枚举类型详解
一路欢笑一路走
enum 枚举详解 enumset enumMap
枚举类型详解
一.Enum详解
1.1枚举类型的介绍
JDK1.5加入了一个全新的类型的”类”—枚举类型,为此JDK1.5引入了一个新的关键字enum,我们可以这样定义一个枚举类型。
Demo:一个最简单的枚举类
public enum ColorType {
RED
第11章 动画效果(上)
onestopweb
动画
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
Eclipse中jsp、js文件编辑时,卡死现象解决汇总
ljf_home
eclipse jsp卡死 js卡死
使用Eclipse编辑jsp、js文件时,经常出现卡死现象,在网上百度了N次,经过N次优化调整后,卡死现象逐步好转,具体那个方法起到作用,不太好讲。将所有用过的方法罗列如下:
1、取消验证
windows–>perferences–>validation
把 除了manual 下面的全部点掉,build下只留 classpath dependency Valida
MySQL编程中的6个重要的实用技巧
tomcat_oracle
mysql
每一行命令都是用分号(;)作为结束
对于MySQL,第一件你必须牢记的是它的每一行命令都是用分号(;)作为结束的,但当一行MySQL被插入在PHP代码中时,最好把后面的分号省略掉,例如:
mysql_query("INSERT INTO tablename(first_name,last_name)VALUES('$first_name',$last_name')");
zoj 3820 Building Fire Stations(二分+bfs)
阿尔萨斯
Build
题目链接:zoj 3820 Building Fire Stations
题目大意:给定一棵树,选取两个建立加油站,问说所有点距离加油站距离的最大值的最小值是多少,并且任意输出一种建立加油站的方式。
解题思路:二分距离判断,判断函数的复杂度是o(n),这样的复杂度应该是o(nlogn),即使常数系数偏大,但是居然跑了4.5s,也是醉了。 判断函数里面做了3次bfs,但是每次bfs节点最多