大数据集群搭建

大数据集群搭建

本文档将搭建以下集群

  • hadoop 集群
  • zookeeper 集群
  • hbase 集群
  • spark 集群
  • kafka 集群

一、准备

1.1 软件版本

  • Ubuntu 18.04
  • JDK 1.8 (jdk-8u151-linux-x64.tar.gz)
  • Hadoop 2.7.7 (hadoop-2.7.7.tar.gz)
  • HBase 1.4.13 (hbase-1.4.13-bin.tar.gz)
  • ZooKeeper 3.5.6 (apache-zookeeper-3.5.6-bin.tar.gz)
  • Spark 2.4.5 (spark-2.4.5-bin-hadoop2.7.tgz)
  • Kafka 2.12-2.3.1 (kafka_2.12-2.3.1.tgz)
  • Kafka Eagle (kafka-eagle-bin-1.4.8.tar.gz)

1.2 网络规划

规划搭建3台机器组成集群模式,IP与计算机名如下:

192.168.100.100 master
192.168.100.110 slaver1
192.168.100.120 slaver2

1.3 软件包拷贝

可将上述软件包拷贝到master机器的/opt目录下

1.4 绑定IP和修改计算机名

1.4.1 修改/etc/hosts,添加IP绑定

root@master:~# cat /etc/hosts
192.168.100.100 master
192.168.100.110 slaver1
192.168.100.120 slaver2

1.4.2 修改/etc/hostname,为绑定计算机名。(计算机名和上面hosts绑定名必须一致

root@master:~# cat /etc/hostname 
master
root@slaver1:~# cat /etc/hostname 
slaver1
root@slaver2:~# cat /etc/hostname 
slaver2

修改完hostname之后好像需要重启才能生效

1.5 SSH 设置

1.5.1 设置ssh可以通过root用户登陆

设置root用户密码

sudo passwd

设置允许ssh以root用户登陆

sudo sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config

重启ssh服务,使配置生效

sudo service ssh restart

1.5.2 SSH无密码登陆 (在master主机进行如下操作)

切换到root用户(注:之后所有操作均以root用户执行)

sudo su

用rsa生成密钥,一路回车。

ssh-keygen -t rsa

把公钥复制一份,并改名为authorized_keys

cd /root/.ssh
cp id_rsa.pub authorized_keys

将authorized_keys文件拷贝到slaver1,slaver2上

scp ./authorized_keys root@slaver1:/root/.ssh
scp ./authorized_keys root@slaver2:/root/.ssh

1.6 JDK安装(三台机器可同步进行)

解压

cd /opt
tar xavf ./jdk-8u151-linux-x64.tar.gz

建立软连接

cd /usr/local
ln -s /opt/jdk1.8.0_151 jdk

将JDK环境变量配置到/etc/profile中(注:如果不好使也可以配置到 /root/.bashrc中)

export JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin

检查JDK是否配置好

source /etc/profile
javac -version

提示 javac 1.8.0_151代表JDK安装完成

二、Hadoop集群搭建

2.1 Hadoop安装

解压 ,并在安装目录下创建tmp、dfs、dfs/name、dfs/node、dfs/data

cd /opt
tar xavf ./hadoop-2.7.7.tar.gz
cd hadoop-2.7.7
mkdir tmp
mkdir dfs
mkdir dfs/name
mkdir dfs/node
mkdir dfs/data

2.2 Hadoop配置

以下操作都在hadoop-2.7.7/etc/hadoop下进行

2.2.1 hadoop-env.sh

修改JAVA_HOME配置项为JDK安装目录

export JAVA_HOME=/usr/local/jdk

2.2.2 core-site.xml

fs.default.name : 这个属性用来指定namenode的hdfs协议的文件系统通信地址,可以指定一个主机+端口

hadoop.tmp.dir : hadoop集群在工作的时候存储的一些临时文件的目录

<configuration> 
  <property> 
    <name>hadoop.tmp.dir</name>  
    <value>/opt/hadoop-2.7.7/tmp</value>  
    <description>Abase for other temporaty directories.</description> 
  </property>  
  <property> 
    <name>fs.default.name</name>  
    <value>hdfs://master:9000</value> 
  </property>  
  <property> 
    <name>io.file.buffer.size</name>  
    <value>131702</value> 
  </property> 
</configuration>

2.2.3 hdfs-site.xml

dfs.name.dir:namenode数据的存放地点。也就是namenode元数据存放的地方,记录了hdfs系统中文件的元数据。

dfs.data.dir: datanode数据的存放地点。也就是block块存放的目录了。

dfs.replication:hdfs的副本数设置。也就是上传一个文件,其分割为block块后,每个block的冗余副本个数,默认配置是3。

dfs.namenode.secondary.http-address:secondarynamenode 运行节点的信息,和 namenode 不同节点

<configuration> 
  <property> 
    <name>dfs.name.dir</name>  
    <value>/opt/hadoop-2.7.7/dfs/name</value>  
    <description>Path on the local filesystem where the NameNode stores the namespace and transactions log persistently.</description> 
  </property>  
  <property> 
    <name>dfs.data.dir</name>  
    <value>/opt/hadoop-2.7.7/dfs/data</value>  
    <description>Comma separated list of on the local filesystem where the NameNode stores the namespace and transactions log persistently.</description> 
  </property>  
  <property> 
    <name>dfs.replication</name>  
    <value>2</value>  
    <description>replication num.</description> 
  </property>  
  <property> 
    <name>dfs.permissions</name>  
    <value>false</value>  
    <description>need not permissions.</description> 
  </property>  
  <property> 
    <name>dfs.namenode.sencondary.http-address</name>  
    <value>master:9001</value>  
    <description>第二namenode地址.</description> 
  </property>  
  <property> 
    <name>dfs.namenode.datanode.registration.ip-hostname-check</name>  
    <value>false</value>  
    <description>check.</description> 
  </property> 
</configuration>

2.2.4 mapred-site.xml

cp mapred-site.xml.template mapred-site.xml

mapreduce.framework.name:指定mr框架为yarn方式

<configuration> 
  <property> 
    <name>mapreduce.framework.name</name>  
    <value>yarn</value> 
  </property>  
  <property>   
    <name>mapreduce.map.memory.mb</name>    
    <value>1536</value> 
  </property>  
  <property>   
    <name>mapreduce.map.java.opts</name>    
    <value>-Xmx1024M</value> 
  </property>  
  <property>   
    <name>mapreduce.reduce.memory.mb</name>    
    <value>3072</value> 
  </property>  
  <property>   
    <name>mapreduce.reduce.java.opts</name>    
    <value>-Xmx2560M</value> 
  </property> 
</configuration>

2.2.5 yarn-site.xml

yarn.resourcemanager.scheduler.class:设置调度算法,默认FIFO

yarn.log-aggregation-enable:如果开启了日志聚合,那么容器日志将被复制到HDFS,并删除本地日志。而后这些日志可以在集群任何节点上用yarn logs命令查看 yarn logs -applicationId <app ID>

yarn.nodemanager.remote-app-log-dir:指定日志存在hdfs上的位置

<configuration> 
  <!--设置使用公平调度算法 --> 
  <property> 
    <name>yarn.resourcemanager.scheduler.class</name>  
   <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value> 
  </property>  
  <!-- Shuffle service 需要加以设置的MapReduce的应用程序服务 -->  
  <property> 
    <name>yarn.nodemanager.aux-services</name>  
    <value>mapreduce_shuffle</value> 
  </property>  
  <property> 
    <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>  
    <value>org.apache.hadoop.mapred.ShuffleHandler</value> 
  </property>
  <!-- 客户端对ResourceManager主机通过 host:port 提交作业-->
  <property> 
    <name>yarn.resourcemanager.address</name>  
    <value>master:8032</value> 
  </property>
  <!-- 客户端对ResourceManager主机通过 host:port 提交作业-->
  <property> 
    <name>yarn.resourcemanager.scheduler.address</name>  
    <value>master:8030</value> 
  </property>
  <!-- NodeManagers通过ResourceManager主机访问host:port-->
  <property> 
    <name>yarn.resourcemanager.resource-tracker.address</name>  
    <value>master:8035</value> 
  </property>
  <!-- 管理命令通过ResourceManager主机访问host:port-->  
  <property> 
    <name>yarn.resourcemanager.admin.address</name>  
    <value>master:8033</value> 
  </property>
  <!-- ResourceManager web页面host:port.-->
  <property> 
    <name>yarn.resourcemanager.webapp.address</name>  
    <value>master:8088</value> 
  </property>  
  <!--开启了日志聚合-->  
  <property> 
    <name>yarn.log-aggregation-enable</name>  
    <value>true</value> 
  </property>  
  <!--设置聚合日志放置的位置-->  
  <property> 
    <name>yarn.nodemanager.remote-app-log-dir</name>  
    <value>/tmp/logs</value> 
  </property>  
  <!--设置聚合日志存放的时间,单位为秒,会自动移除-->  
  <property> 
    <name>yarn.log-aggregation.retain-seconds</name>  
    <value>3600</value> 
  </property> 
</configuration>

2.2.6 slaves

集群中机器的主机名列表,会在下边每台机器上启动一个NodeManager

master
slaver1
slaver2

2.2.7 将配置好的hadoop分发到slaver1,slaver2上

cd /opt
scp -r hadoop-2.7.7 root@slaver1:/opt
scp -r hadoop-2.7.7 root@slaver2:/opt

2.3 Hadoop启动

2.3.1 格式化一个新的文件系统

注意:第一次搭建的时候格式化一次就好!!不要重复format

cd /opt/hadoop-2.7.7/bin
./hadoop namenode -format

2.3.2 启动HDFS

cd /opt/hadoop-2.7.7/sbin
./start-dfs.sh
# stop-dfs.sh

通过jps检查是否启动成功,看看master上是否有NameNode, slaver节点上是否有DataNode

root@master:/opt/hadoop-2.7.7/sbin# jps
6306 SecondaryNameNode
6050 NameNode
6596 Jps

root@slaver1:~# jps
5307 Jps
4987 DataNode

root@slaver2:~# jps
3156 Jps
3003 DataNode

集群启动不成功,可能的原因是datanode的clusterID 和 namenode的clusterID 不匹配。解决的办法将之前创建的tmp、dfs目录下内容全清掉,然后再重新启动一遍。

2.3.3启动YARN

./start-yarn.sh
# stop-yarn.sh

通过jps检查是否启动成功,看看master上是否有ResourceManager,slaver上是否有NodeManager

root@master:/opt/hadoop-2.7.7/sbin# jps
6672 ResourceManager
6306 SecondaryNameNode
6050 NameNode
6934 Jps

root@slaver1:~# jps
5605 Jps
5416 NodeManager
4987 DataNode

root@slaver2:~# jps
3296 NodeManager
3480 Jps
3003 DataNode

可通过网页http://master:8088查看Hadoop任务状态

三、ZooKeeper集群搭建

3.1 ZooKeeper安装

解压,并创建data目录

cd /opt
tar xavf ./apache-zookeeper-3.5.6-bin.tar.gz
cd apache-zookeeper-3.5.6-bin
mkdir data

在data目录下创建myid文件,在文件第一行写上对应的 Server id。这个id必须在集群环境中服务器标识中是唯一的,且大小在1~255之间。

cd data
echo "1" > myid

3.2 ZooKeeper配置

3.2.1 zoo.cfg

cp zoo_sample.cfg zoo.cfg

修改如下:

dataDir:存放内存数据结构的snapshot,便于快速恢复,默认情况下,事务日志也会存储在这里。建议同时配置参数dataLogDir, 事务日志的写性能直接影响zk性能。

server.id=IP/Host : port1 : port2
id:用来配置ZK集群中的各节点,并建议id的值和myid保持一致。
IP/Host: 服务器的 IP 或者是与 IP 地址做了映射的主机名
port1:Leader和Follower或Observer交换数据使用
port2:用于Leader选举。

# 注意:需要每个节点都配策划嗯自己的地址
clientPortAddress=master

dataDir=/opt/apache-zookeeper-3.5.6-bin/data
server.1=master:2888:3888
server.2=slaver1:2888:3888
server.3=slaver2:2888:3888                         

3.2.2 将配置好的zookeeper分发到slaver1,slaver2

cd /opt
scp -r apache-zookeeper-3.5.6-bin root@slaver1:/opt
scp -r apache-zookeeper-3.5.6-bin root@slaver2:/opt

分发完成之后,需要ssh到各slaver节点上,修改对应myid中的值。设置slaver1中myid为2,设置slaver2中myid为3, 修改对应的zoo.cfg

3.3 ZooKeeper启动

分别在master,slaver1,slaver2执行如下命令

cd /opt/apache-zookeeper-3.5.6-bin/bin
./zkServer.sh start
# ./zkServer.sh stop

各节点启动后,通过jps检查启动状态,会出现QuorumPeerMain进程

root@master:/opt/apache-zookeeper-3.5.6-bin/bin# jps
6672 ResourceManager
6306 SecondaryNameNode
6050 NameNode
7434 QuorumPeerMain
7470 Jps

通过 zkServer.sh status查看各节点的运行模式

root@master:/opt/apache-zookeeper-3.5.6-bin/bin# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.5.6-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: master.
Mode: follower

root@slaver1:~# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: slaver1.
Mode: leader

root@slaver2:~# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Client port found: 2181. Client address: slaver2.
Mode: follower

3.4 ZooKeeper集群启动脚本

为避免跑到每台机器上去启动,可在master节点/opt/apache-zookeeper-3.5.6-bin/bin目录下添加脚本:

  1. 一键启动脚本:zk-cluster-start.sh
brokers="master slaver1 slaver2"
#brokers="slaver1"
ZK_HOME="/opt/apache-zookeeper-3.5.6-bin"
ZK_NAME="zookeeper"

echo "INFO: Begin to start Zookeeper cluster ..."

# By default disable strict host key checking
if [ "$ZK_SSH_OPTS" = "" ]; then
  ZK_SSH_OPTS="-o StrictHostKeyChecking=no"
fi

for broker in $brokers
do
  echo "INFO:Start ${ZK_NAME} on ${broker} ..."
  ssh $ZK_SSH_OPTS ${broker} "${ZK_HOME}/bin/zkServer.sh start"
  if [[ $? -eq 0 ]]; then
    echo "INFO: start ${ZK_NAME} on ${broker}  is on !"
  fi
done
echo "INFO:Zookeeper cluster started !"
  1. 一键关闭脚本 zk-cluster-stop.sh
brokers="master slaver1 slaver2"
#brokers="slaver1"
ZK_HOME="/opt/apache-zookeeper-3.5.6-bin"
ZK_NAME="zookeeper"

echo "INFO: Begin to stop Zookeeper cluster ..."

# By default disable strict host key checking
if [ "$ZK_SSH_OPTS" = "" ]; then
  ZK_SSH_OPTS="-o StrictHostKeyChecking=no"
fi

for broker in $brokers
do
  echo "INFO:Shut down ${ZK_NAME} on ${broker} ..."
  ssh $ZK_SSH_OPTS ${broker} "${ZK_HOME}/bin/zkServer.sh stop"
  if [[ $? -eq 0 ]]; then
    echo "INFO :Shut down ${ZK_NAME} on ${broker}  is down !"
  fi
done
echo "INFO:Zookeeper cluster shutdown completed !"

四、HBase集群搭建

4.1 HBase安装

cd /opt
tar xavf ./hbase-1.4.13-bin.tar.gz

4.2 HBase配置

以下配置文件在/opt/hbase-1.4.13/conf目录下

4.2.1 hbase-env.sh

修改JAVA_HOME配置项为JDK安装目录,不使用hbase自带的zookeeper

export JAVA_HOME=/usr/local/jdk
export HBASE_MANAGES_ZK=false

4.2.2 hbase-site.xml

hbase.rootdir: hbase存放数据目录

hbase.zookerper.quorum: zookooper 服务启动的节点,只能为奇数个

<configuration>
    <!-- 指定hbase在HDFS上存储的路径 -->
        <property>
                <name>hbase.rootdir</name>
                <value>hdfs://master:9000/hbase</value>
        </property>
        <!-- 指定hbase是分布式的 -->
        <property>
                <name>hbase.cluster.distributed</name>
                <value>true</value>
        </property>
        <!-- 指定zk的地址,多个用“,”分割 -->
        <property>
                <name>hbase.zookeeper.quorum</name>
                <value>master:2181,slaver1:2181,slaver2:2181</value>
        </property>
</configuration>

4.2.3 regionservers

master
slaver1
slaver2

4.2.4 backup-masters

用于配置高可用HMaster节点

slaver1

4.2.5 将配置好的hbase分发到slaver1,slaver2

cd /opt
scp -r hbase-1.4.13 root@slaver1:/opt
scp -r hbase-1.4.13 root@slaver2:/opt

4.3 HBase启动

注意:启动hbase之前,要首先启动hadoop和zookeeper

cd /opt/hbase-1.4.13/bin
./start-hbase.sh
# stop-hbase.sh

通过jps检查启动状态,master会出现HMaster进程, slaver会出现HRegionServer进程

root@master:/opt/hbase-1.4.13/bin# jps
6672 ResourceManager
6306 SecondaryNameNode
7762 HMaster
6050 NameNode
7891 Jps
7434 QuorumPeerMain

root@slaver1:~# jps
6161 HRegionServer
6290 Jps
5959 QuorumPeerMain
5416 NodeManager
4987 DataNode

root@slaver2:~# jps
3776 QuorumPeerMain
3296 NodeManager
4489 Jps
3003 DataNode
4364 HRegionServer

启动问题:

  1. HMaster: Failed to become active master, 解决办法:把hbase.rootdir对应的目录删掉即可, e.g. hadoop fs -rm -r /hbase

五、Spark集群搭建

5.1 Spark安装

cd /opt
tar xavf ./spark-2.4.5-bin-hadoop2.7.tgz

5.2 Spark配置

以下配置在spark-2.4.5-bin-hadoop2.7/conf目录下

5.2.1 spark-env.sh

复制spark-env.sh.template成spark-env.sh, 添加如下信息:

export JAVA_HOME=/usr/local/jdk
export SPARK_MASTER_HOST=master
export SPARK_MASTER_PORT=7077
export SPARK_HOME=/opt/spark-2.4.5-bin-hadoop2.7
# 目的是使能运行yarn-client/yarn-cluster模式
export SPARK_HOME=/opt/hadoop-2.7.7
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop

5.2.2 slaves

复制slaves.template成slaves, 做如下修改

master
slaver1
slaver2

5.2.3 将配置好的spark分发到slaver1,slaver2

cd /opt
scp -r spark-2.4.5-bin-hadoop2.7 root@slaver1:/opt
scp -r spark-2.4.5-bin-hadoop2.7 root@slaver2:/opt

5.3 Spark启动

cd /opt/spark-2.4.5-bin-hadoop2.7/sbin
./start-all.sh
# stop-all.sh

通过jps查看状态,发现多了一个Worker进程

root@master:/opt/spark-2.4.5-bin-hadoop2.7/sbin# jps
1680 NameNode
1937 SecondaryNameNode
2097 QuorumPeerMain
10258 HMaster
12004 Jps
11879 Worker
11720 Master

也可以通过登陆http://master:8080 查看状态

5.4 Spark提交任务示例

5.4.1 yarn-client模式

spark-submit \
--class com.jdsy.BdatApp \
--master yarn \
--deploy-mode client \
--num-executors 3 \
--executor-cores 3 \
--executor-memory 4G \
--conf spark.default.parallelism=25 \
--packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.4.5 \
./bdat1.0-1.0-SNAPSHOT-jar-with-dependencies.jar

5.4.2 yarn-cluster模式

#!/bin/bash

if [ $# -ne 1 ];then
    echo "usage $0 configFile"
    exit
fi

spark-submit \
--class com.jdsy.BdatApp \
--master yarn \
--deploy-mode client \
--num-executors 3 \
--executor-cores 6 \
--executor-memory 6G \
--conf spark.default.parallelism=50 \
--conf spark.sql.shuffle.partitions=3 \
--files ./mysql.json \
--packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.4.5 \
./bdat1.0-1.0-SNAPSHOT-jar-with-dependencies.jar \
$1

说明:

  1. 上边$1表示要从外边把一个文件传到spark程序中
  2. 可通过 yarn logs -applicationId <app ID> 来查看自己打的日志信息以及崩溃信息等
  3. 通过yarn application -kill <app ID> 来杀掉这个程序

六、Kafka集群搭建

6.1 Kafka安装

cd /opt
tar xavf ./kafka_2.12-2.3.1.tgz

6.2 Kafka配置

以下配置在kafka_2.12-2.3.1/config目录下

6.2.1 server.properties

# 指定代理id,borker.id可以任意指定,前提是保证集群内每台机器的broker.id唯一,第二台机器设置为2...以此类推
broker.id=0

# 提供给客户端响应的端口, master节点指定为master:9092, slaver1节点指定slaver1:9092, 依次类推
listeners=PLAINTEXT://master:9092

# kafka数据的存放目录,而非Kafka的日志目录
log.dirs=/opt/kafka_2.12-2.3.1/kafka-log

# 设置zookeeper集群地址
zookeeper.connect=master:2181,slaver1:2181,slaver2:2181

6.2.2 将配置好的kafka分发到slaver1,slaver2

cd /opt
scp -r kafka_2.12-2.3.1 root@slaver1:/opt
scp -r kafka_2.12-2.3.1 root@slaver2:/opt

注意:

  1. 需要修改slaver节点上broker.id, 比如slaver1为1, slaver2为2
  2. 修改对应的listeners

6.3 Kafka启动

分别在master,slaver1,slaver2上执行如下命令

cd /opt/kafka_2.12-2.3.1/
./bin/kafka-server-start.sh -daemon ./config/server.properties
# kafka-server-stop.sh

通过jps查看状态, 会发现多了Kafka进程

root@master:/opt/kafka_2.12-2.3.1# jps
1680 NameNode
1937 SecondaryNameNode
2097 QuorumPeerMain
10258 HMaster
11879 Worker
11720 Master
12618 Jps
12590 Kafka

root@slaver1:/opt/kafka_2.12-2.3.1# jps
6833 Jps
5414 HRegionServer
1575 DataNode
1751 QuorumPeerMain
6809 Kafka
6077 Worker

root@slaver2:/opt/kafka_2.12-2.3.1# jps
1456 DataNode
4768 HRegionServer
1626 QuorumPeerMain
6156 Kafka
5438 Worker
6175 Jps

6.4 Kafka常用操作

6.4.1 列出所有topic信息

kafka-topics.sh --describe --zookeeper master:2181,slaver1:2181,slaver2:2181

6.4.2 创建topic

kafka-topics.sh --create \
    --zookeeper master:2181,slaver1:2181,slaver2:2181 \
    --topic topicName \
    --partitions 分区数 \
    --replication-factor 备份数

6.5 Kafka Eagle安装

6.5.1 解压

cd /opt
tar xavf kafka-eagle-bin-1.4.8.tar.gz

6.5.2 修改配置

kafka-eagle-web-1.4.8/conf/system-config.properties

#如果只有一个集群的话,就写一个cluster1就行了
kafka.eagle.zk.cluster.alias=cluster1
cluster1.zk.list=master:2181,slaver1:2181,slaver2:2181

#如果kafka开启了sasl认证,需要在这个地方配置sasl认证文件
kafka.eagle.sasl.enable=false

#下面两项是配置数据库的,默认使用sqlite,如果量大,建议使用mysql,这里我使用的是sqlit
#如果想使用mysql建议在文末查看官方文档
kafka.eagle.driver=org.sqlite.JDBC
kafka.eagle.url=jdbc:sqlite:/opt/kafka-eagle-web-1.4.8/db/ke.db
kafka.eagle.username=root
kafka.eagle.password=111111

6.5.3 启动kafka-eagle

cd /opt/kafka-eagle-web-1.4.8/bin
./ke.sh start
#./ke.sh stop

启动之后可通过 http://localcast:8048/ke登录查看信息,默认用户名密码 admin/123456

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345