Hadoop Hive与Hbase整合+thrift

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

1.  简介

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

Hive与HBase的整合功能的实现是利用两者本身对外的API接口互相进行通信,相互通信主要是依靠hive_hbase-handler.jar工具类, 大致意思如图所示:



2.  Hive项目介绍

项目结构

 

Hive配置文件介绍
•hive-site.xml      hive的配置文件
•hive-env.sh        hive的运行环境文件
•hive-default.xml.template  默认模板
•hive-env.sh.template     hive-env.sh默认配置
•hive-exec-log4j.properties.template   exec默认配置
• hive-log4j.properties.template log默认配置
hive-site.xml
< property>
  <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive?createData baseIfNotExist=true</value>
  <description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
  <description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
   <description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
   <value>test</value>
   <description>password to use against metastore database</description>
</property>
  

hive-env.sh
•配置Hive的配置文件路径
•export HIVE_CONF_DIR= your path
•配置Hadoop的安装路径
•HADOOP_HOME=your hadoop home

我们按数据元的存储方式不同安装。


3.  使用Derby数据库安装

什么是Derby安装方式
•Apache Derby是一个完全用java编写的数据库,所以可以跨平台,但需要在JVM中运行
•Derby是一个Open source的产品,基于Apache License 2.0分发
•即将元数据存储在Derby数据库中,也是Hive默认的安装方式


1 .Hadoop和Hbase都已经成功安装了

Hadoop集群配置:http://blog.csdn.net/hguisu/article/details/723739

hbase安装配置:http://blog.csdn.net/hguisu/article/details/7244413

2. 下载hive

hive目前最新的版本是0.12,我们先从http://mirror.bit.edu.cn/apache/hive/hive-0.12.0/ 上下载hive-0.12.0.tar.gz,但是请注意,此版本基于是基于hadoop1.3和hbase0.94的(如果安装hadoop2.X ,我们需要修改相应的内容)

3. 安装:

tar zxvf hive-0.12.0.tar.gz 

 cd hive-0.12.0


4. 替换jar包,与hbase0.96和hadoop2.2版本一致。

   由于我们下载的hive是基于hadoop1.3和hbase0.94的,所以必须进行替换,因为我们的hbse0.96是基于hadoop2.2的,所以我们必须先解决hive的hadoop版本问题,目前我们从官网下载的hive都是用1.几的版本编译的,因此我们需要自己下载源码来用hadoop2.X的版本重新编译hive,这个过程也很简单,只需要如下步骤:

     1. 先从 http://svn.apache.org/repos/asf/hive/branches/branch-0.12 或者是http://svn.apache.org/repos/asf/hive/trunk   我们下载到 /home/hadoop/branch-0.12下。

    2.  branch-0.12是使用ant编译,trunk下面是使用maven编译,如果未按照maven,需要从 http://maven.apache.org/download.cgi  下载maven,或者使用yum install maven。然后解压出来并在PATH下把$maven_home/bin加入或者使用链接(ln -s /usr/local/bin/mvn $maven_home/bin ).然后就是使用mvn 命令。 运行mvn -v就能 知道maven是否配置成功
 
       3.   配置好maven开始编译hive,我们cd到下载源码的 branch-0.12  目录,然后运行 mvn clean package -DskipTests -Phadoop-2 开始编译

    4.编译好后的新jar包是存放在各个模块下的target的,这些新jar包的名字都叫 hive-***-0.13.0-SNAPSHOT.jar,***为hive下的模块名, 我们需要运行命令将其拷贝到hive-0.12.0/lib下
    find /home/hadoop/branch-0.12  -name "hive*SNAPSHOT.jar"|xargs -i cp {} /home/hadoop/hive-0.12.0/lib。拷贝过去后我们比照着删除原lib下对应的0.12版本的jar包。
  
     5. 接着我们同步hbase的版本,先cd到hive0.12.0/lib下,将hive-0.12.0/lib下hbase-0.94开头的那两个jar包删掉,然后从/home/hadoop/ hbase-0.96.0-hadoop2 /lib下hbase开头的包都拷贝过来
       find /home/hadoop/hbase-0.96.0-hadoop/lib -name "hbase*.jar"|xargs -i cp {} ./

     6. 基本的同步完成了,重点检查下zookeeper和protobuf的jar包是否和hbase保持一致,如果不一致,

       拷贝protobuf.**.jar和zookeeper-3.4.5.jar到hive/lib下。

  
   7.如果用mysql当原数据库,
      别忘了找一个mysql的jdbcjar包 mysql-connector-java-3.1.12-bin.jar也拷贝到hive-0.12.0/lib下

5. 配置hive

•进入hive-0.12/conf目录
•依据hive-env.sh.template,创建hive-env.sh文件
•cp  hive-env.sh.template hive-env.sh
•修改hive-env.sh
•指定hive配置文件的路径
•export HIVE_CONF_DIR=/home/hadoop/hive-0.12/conf
•指定Hadoop路径
• HADOOP_HOME=/home/hadoop/hadoop-2.2.0

hive-site.xml
  1. <code class="language-html"><?xml version="1.0"?>  
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  
  3. <configuration>  
  4.   
  5. <!-- Hive Execution Parameters -->  
  6.   
  7. <property>  
  8.   <name>hive.exec.reducers.bytes.per.reducer</name>  
  9.   <value>1000000000</value>  
  10.   <description>size per reducer.The default is 1G, i.e if the input size is 10G, it will use 10 reducers.</description>  
  11. </property>  
  12.   
  13. <property>  
  14.   <name>hive.exec.reducers.max</name>  
  15.   <value>999</value>  
  16.   <description>max number of reducers will be used. If the one  
  17.         specified in the configuration parameter mapred.reduce.tasks is  
  18.         negative, hive will use this one as the max number of reducers when  
  19.         automatically determine number of reducers.</description>  
  20. </property>  
  21.   
  22. <property>  
  23.   <name>hive.exec.scratchdir</name>  
  24.   <value>/hive/scratchdir</value>  
  25.   <description>Scratch space for Hive jobs</description>  
  26. </property>  
  27.   
  28. <property>  
  29.   <name>hive.exec.local.scratchdir</name>  
  30.   <value>/tmp/${user.name}</value>  
  31.   <description>Local scratch space for Hive jobs</description>  
  32. </property>  
  33. <property>  
  34.   <name>javax.jdo.option.ConnectionURL</name>  
  35.   <value>jdbc:derby:;databaseName=metastore_db;create=true</value>  
  36.   <description>JDBC connect string for a JDBC metastore</description>  
  37. </property>  
  38.   
  39. <property>  
  40.   <name>javax.jdo.option.ConnectionDriverName</name>  
  41.   <value>org.apache.derby.jdbc.EmbeddedDriver</value>  
  42.   <description>Driver class name for a JDBC metastore</description>  
  43. </property>  
  44.   
  45. <property>  
  46.   <name>javax.jdo.PersistenceManagerFactoryClass</name>  
  47.   <value>org.datanucleus.api.jdo.JDOPersistenceManagerFactory</value>  
  48.   <description>class implementing the jdo persistence</description>  
  49. </property>  
  50.   
  51. <property>  
  52.   <name>javax.jdo.option.DetachAllOnCommit</name>  
  53.   <value>true</value>  
  54.   <description>detaches all objects from session so that they can be used after transaction is committed</description>  
  55. </property>  
  56.   
  57. <property>  
  58.   <name>javax.jdo.option.ConnectionUserName</name>  
  59.   <value>APP</value>  
  60.   <description>username to use against metastore database</description>  
  61. </property>  
  62.   
  63. <property>  
  64.   <name>javax.jdo.option.ConnectionPassword</name>  
  65.   <value>mine</value>  
  66.   <description>password to use against metastore database</description>  
  67. </property>  
  68.   
  69. <property>  
  70.   <name>hive.metastore.warehouse.dir</name>  
  71.   <value>/hive/warehousedir</value>  
  72.   <description>location of default database for the warehouse</description>  
  73. </property>  
  74.   
  75.   
  76. <property>  
  77.  <name>hive.aux.jars.path</name>  
  78.   <value>  
  79.   file:///home/hadoop/hive-0.12.0/lib/hive-ant-0.13.0-SNAPSHOT.jar,  
  80.   file:///home/hadoop/hive-0.12.0/lib/protobuf-java-2.4.1.jar,  
  81.   file:///home/hadoop/hive-0.12.0/lib/hbase-client-0.96.0-hadoop2.jar,  
  82.   file:///home/hadoop/hive-0.12.0/lib/hbase-common-0.96.0-hadoop2.jar,  
  83.   file:///home/hadoop/hive-0.12.0/lib/zookeeper-3.4.5.jar,  
  84.   file:///home/hadoop/hive-0.12.0/lib/guava-11.0.2.jar  
  85.   </value>  
  86. </property></code>  
<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><!-- Hive Execution Parameters --><property>  <name>hive.exec.reducers.bytes.per.reducer</name>  <value>1000000000</value>  <description>size per reducer.The default is 1G, i.e if the input size is 10G, it will use 10 reducers.</description></property><property>  <name>hive.exec.reducers.max</name>  <value>999</value>  <description>max number of reducers will be used. If the one        specified in the configuration parameter mapred.reduce.tasks is        negative, hive will use this one as the max number of reducers when        automatically determine number of reducers.</description></property><property>  <name>hive.exec.scratchdir</name>  <value>/hive/scratchdir</value>  <description>Scratch space for Hive jobs</description></property><property>  <name>hive.exec.local.scratchdir</name>  <value>/tmp/${user.name}</value>  <description>Local scratch space for Hive jobs</description></property><property>  <name>javax.jdo.option.ConnectionURL</name>  <value>jdbc:derby:;databaseName=metastore_db;create=true</value>  <description>JDBC connect string for a JDBC metastore</description></property><property>  <name>javax.jdo.option.ConnectionDriverName</name>  <value>org.apache.derby.jdbc.EmbeddedDriver</value>  <description>Driver class name for a JDBC metastore</description></property><property>  <name>javax.jdo.PersistenceManagerFactoryClass</name>  <value>org.datanucleus.api.jdo.JDOPersistenceManagerFactory</value>  <description>class implementing the jdo persistence</description></property><property>  <name>javax.jdo.option.DetachAllOnCommit</name>  <value>true</value>  <description>detaches all objects from session so that they can be used after transaction is committed</description></property><property>  <name>javax.jdo.option.ConnectionUserName</name>  <value>APP</value>  <description>username to use against metastore database</description></property><property>  <name>javax.jdo.option.ConnectionPassword</name>  <value>mine</value>  <description>password to use against metastore database</description></property><property>  <name>hive.metastore.warehouse.dir</name>  <value>/hive/warehousedir</value>  <description>location of default database for the warehouse</description></property><property> <name>hive.aux.jars.path</name>  <value>  file:///home/hadoop/hive-0.12.0/lib/hive-ant-0.13.0-SNAPSHOT.jar,  file:///home/hadoop/hive-0.12.0/lib/protobuf-java-2.4.1.jar,  file:///home/hadoop/hive-0.12.0/lib/hbase-client-0.96.0-hadoop2.jar,  file:///home/hadoop/hive-0.12.0/lib/hbase-common-0.96.0-hadoop2.jar,  file:///home/hadoop/hive-0.12.0/lib/zookeeper-3.4.5.jar,  file:///home/hadoop/hive-0.12.0/lib/guava-11.0.2.jar  </value></property>

Hive使用Hadoop,这意味着你必须在PATH里面设置了hadoop路径,或者导出export HADOOP_HOME=<hadoop-install-dir>也可以。
另外,你必须在创建Hive库表前,在HDFS上创建/tmp和/hive/warehousedir(也称为hive.metastore.warehouse.dir的),并且将它们的权限设置为chmod g+w。完成这个操作的命令如下:
$ $HADOOP_HOME/bin/hadoop fs -mkdir /tmp
$ $HADOOP_HOME/bin/hadoop fs -mkdir /hive/warehousedir
$ $HADOOP_HOME/bin/hadoop fs -chmod g+w /tmp
$ $HADOOP_HOME/bin/hadoop fs -chmod g+w/hive/warehousedir
    我同样发现设置HIVE_HOME是很重要的,但并非必须。
$ export HIVE_HOME=<hive-install-dir>
    在Shell中使用Hive命令行(cli)模式:
$ $HIVE_HOME/bin/hive

5. 启动hive

1).单节点启动

#bin/hive -hiveconf hbase.master=master:490001

2) 集群启动:

#bin/hive -hiveconf hbase.zookeeper.quorum=node1,node2,node3

如何hive-site.xml文件中没有配置hive.aux.jars.path,则可以按照如下方式启动。

bin/hive --auxpath /usr/local/hive/lib/hive-hbase-handler-0.96.0.jar, /usr/local/hive/lib/hbase-0.96.jar, /usr/local/hive/lib/zookeeper-3.3.2.jar -hiveconf hbase.zookeeper.quorum=node1,node2,node3

启动直接#bin/hive 也可以。

6 测试hive

•建立测试表 pokes
hive> CREATE TABLE pokes (foo INT, bar STRING);
OK
Time taken: 1.842 seconds
hive> show tables;                             
OK
pokes
Time taken: 0.182 seconds, Fetched: 1 row(s)
 
•数据导入 pokes
hive> LOAD DATA LOCAL INPATH './examples/files/kv1.txt' OVERWRITE INTO pokse

然后查看hadoop的文件:
bin/hadoop dfs -ls /hive/warehousedir
看到新增一个文件:
drwxr-xr-x   - hadoop supergroup     0  09:06 /hive/warehousedir/pokes

注:使用derby存储方式时,运行hive会在当前目录生成一个derby文件一个metastore_db目录。这种存储方式的弊端是在同一个目录下同时只能有一个hive客户端能使用数据库,否则报错。


4.  使用MYSQL数据库的方式安装

安装MySQL
• Ubuntu 采用apt-get安装
• sudo apt-get install mysql-server
• 建立数据库hive
• create database hivemeta
• 创建hive用户,并授权
• grant all on hive.* to hive@'%'  identified by 'hive';  
• flush privileges;  

我们直接修改hive-site.xml就可以啦。

修改hive-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>


<property>
  <name>hive.exec.scratchdir</name>
  <value>/hive/scratchdir</value>
  <description>Scratch space for Hive jobs</description>
</property>


<property>
  <name>hive.exec.local.scratchdir</name>
  <value>/tmp/${user.name}</value>
  <description>Local scratch space for Hive jobs</description>
</property>
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://192.168.1.214:3306/hiveMeta?createDatabaseIfNotExist=true</value>
  <description>JDBC connect string for a JDBC metastore</description>
</property>


<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
  <description>Driver class name for a JDBC metastore</description>
</property>


<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>hive</value>
  <description>username to use against metastore database</description>
</property>


<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>hive</value>
  <description>password to use against metastore database</description>
</property>



<property>
  <name>hive.metastore.warehouse.dir</name>
  <value>/hive/warehousedir</value>
  <description>location of default database for the warehouse</description>
</property>

<property>
 <name>hive.aux.jars.path</name>
  <value>
  file:///home/hadoop/hive-0.12.0/lib/hive-ant-0.13.0-SNAPSHOT.jar,
  file:///home/hadoop/hive-0.12.0/lib/protobuf-java-2.4.1.jar,
  file:///home/hadoop/hive-0.12.0/lib/hbase-client-0.96.0-hadoop2.jar,
  file:///home/hadoop/hive-0.12.0/lib/hbase-common-0.96.0-hadoop2.jar,
  file:///home/hadoop/hive-0.12.0/lib/zookeeper-3.4.5.jar,
  file:///home/hadoop/hive-0.12.0/lib/guava-11.0.2.jar

  </value>
</property>

jdbc:mysql://192.168.1.214:3306/hiveMeta?createDatabaseIfNotExist=true
其中hiveMeta是mysql的数据库名createDatabaseIfNotExist没有就自动创建

本地mysql启动hive :


直接运行#bin/hive 就可以。


远端mysql方式,启动hive:


服务器端(192.168.1.214上机master上):


     在服务器端启动一个 MetaStoreServer,客户端利用 Thrift 协议通过 MetaStoreServer 访问元数据库。

   启动hive,这个又可以分为启动metastore和hiveserver,其中metastore用于和mysql之间的表结构创建或更新时通讯,hiveserver用于客户端连接,这这个都要启动,具体的启动命令:
启动metastore: hive --service metastore     -hiveconf hbase.zookeeper.quorum=node1,node2,node3 -hiveconf hbase.zookeeper.property.clientPort=2222   (远程mysql需要启动)

启动hiveservice: hive --service hiveserver    -hiveconf hbase.zookeeper.quorum= node1, node2,node3   -hiveconf hbase.zookeeper.property.clientPort=2222  (启动服务,这样jdbc:hive就能连上,默认10000端口,后面的部分一定要带上,否则用eclipse连接不上的)
 起来后我们在eclipse就可以使用jdbc:hive来连接了。如
          Class. forName ( "org.apache.hadoop.hive.jdbc.HiveDriver" );
        Connection conn = DriverManager.getConnection("jdbc:hive://server1:10000/hiveMeta","root","111111");
        return conn;
其实使用上和普通的数据库已经很相似了,除了建表的语句有一些差别。

当然你也可以在hive-0.12.0/bin运行
hive   -hiveconf hive.root.logger=DEBUG,console   -hiveconf hbase.zookeeper.quorum= server2,server3  -hiveconf hbase.zookeeper.property.clientPort=2222
其中 hbase.zookeeper.property.clientPort就是hbase-site.xml配置的zookeeper的端口号。

客户端hive 的hive-site.xml配置文件:
<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration><property>  <name>hive.metastore.warehouse.dir</name>  <value>/hive/warehousedir</value></property> <property>  <name>hive.metastore.local</name>  <value>false</value></property><property>  <name>hive.metastore.uris</name>  <value>thrift://192.168.1.214:9083</value></property></configuration>
这一步,我们新加了配置
<property>  
  <name>hive.metastore.uris</name>  
  <value>thrift://192.168.1.214:9083</value>  
</property>  
这个就是使用thrift访问的端口配置。thrift://192.168.1.214:9083就是hive元数据访问路径

进入hive客户端,运行show tables;

至此,可以在linux用各种shell来测试,也可以通过eclipse连接到hive来测试,和通过jdbc连接普通数据库一致

hive的服务端和客户端都可以放在同一台服务器上:
hive-site.xml

<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><property>  <name>hive.exec.scratchdir</name>  <value>/hive/scratchdir</value>  <description>Scratch space for Hive jobs</description></property><property>  <name>hive.exec.local.scratchdir</name>  <value>/tmp/${user.name}</value>  <description>Local scratch space for Hive jobs</description></property><property>  <name>javax.jdo.option.ConnectionURL</name>  <value>jdbc:mysql://192.168.1.214:3306/hiveMeta?createDatabaseIfNotExist=true</value>  <description>JDBC connect string for a JDBC metastore</description></property><property>  <name>javax.jdo.option.ConnectionDriverName</name>  <value>com.mysql.jdbc.Driver</value>  <description>Driver class name for a JDBC metastore</description></property><property>  <name>javax.jdo.option.ConnectionUserName</name>  <value>hive</value>  <description>username to use against metastore database</description></property><property>  <name>javax.jdo.option.ConnectionPassword</name>  <value>hive</value>  <description>password to use against metastore database</description></property><property>  <name>hive.metastore.warehouse.dir</name>  <value>/hive/warehousedir</value>  <description>location of default database for the warehouse</description></property><property> <name>hive.aux.jars.path</name>  <value>  file:///home/hadoop/hive-0.12.0/lib/hive-ant-0.13.0-SNAPSHOT.jar,  file:///home/hadoop/hive-0.12.0/lib/protobuf-java-2.4.1.jar,  file:///home/hadoop/hive-0.12.0/lib/hbase-client-0.96.0-hadoop2.jar,  file:///home/hadoop/hive-0.12.0/lib/hbase-common-0.96.0-hadoop2.jar,  file:///home/hadoop/hive-0.12.0/lib/zookeeper-3.4.5.jar,  file:///home/hadoop/hive-0.12.0/lib/guava-11.0.2.jar  </value><property>    <name>hive.metastore.uris</name>    <value>thrift://192.168.1.214:9083</value>  </property>  </property>




4.  与Hbase整合

之前我们测试创建表的都是创建本地表,非hbase对应表。现在我们整合回到hbase。

1.创建hbase识别的数据库:

CREATE TABLE hbase_table_1(key int, value string)STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,cf1:val")TBLPROPERTIES ("hbase.table.name" = "xyz");  

hbase.table.name 定义在hbase的table名称

hbase.columns.mapping 定义在hbase的列族 


在hbase 下也能看到,两边新增数据都能实时看到。

可以登录Hbase去查看数据了
#bin/hbase shell
hbase(main):001:0> describe 'xyz'  
hbase(main):002:0> scan 'xyz'  
hbase(main):003:0> put 'xyz','100','cf1:val','www.360buy.com'


这时在Hive中可以看到刚才在Hbase中插入的数据了。

2.使用sql导入数据


如果要insert 与hbase整合的表,不能像本地表一样load,需要利用已有的表进行。

新的改变

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 全新的界面设计 ,将会带来全新的写作体验;
  2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
  3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
  4. 全新的 KaTeX数学公式 语法;
  5. 增加了支持甘特图的mermaid语法1 功能;
  6. 增加了 多屏幕编辑 Markdown文章功能;
  7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
  8. 增加了 检查列表 功能。

功能快捷键

撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G

合理的创建标题,有助于目录的生成

直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

插入链接与图片

链接: link.

图片: Alt

带尺寸的图片: Alt

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted block var foo = 'bar'; 

生成一个适合你的列表

  • 项目
    • 项目
      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目 Value
电脑 $1600
手机 $12
导管 $1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列 第二列 第三列
第一列文本居中 第二列文本居右 第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPE ASCII HTML
Single backticks 'Isn't this fun?' ‘Isn’t this fun?’
Quotes "Isn't this fun?" “Isn’t this fun?”
Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to- HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。2

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n 1 ) ! n N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N 是通过欧拉积分

Γ ( z ) = 0 t z 1 e t d t &ThinSpace; . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

gantt
        dateFormat  YYYY-MM-DD
        title Adding GANTT diagram functionality to mermaid
        section 现有任务
        已完成               :done,    des1, 2014-01-06,2014-01-08
        进行中               :active,  des2, 2014-01-09, 3d
        计划一               :         des3, after des2, 5d
        计划二               :         des4, after des3, 5d
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::

张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

这将产生一个流程图。:

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. mermaid语法说明 ↩︎

  2. 注脚的解释 ↩︎

猜你喜欢

转载自blog.csdn.net/skiwnc/article/details/84000439