自学时候整理的笔记,基础部分后续学完再发

分享 123456789987654321 ⋅ 于 2020-06-27 12:45:32 ⋅ 最后回复由 青牛 2020-06-27 12:48:52 ⋅ 1676 阅读

1.Linux准备

更新时间

cd ~/hadoop_base_op
./ssh_root.sh ntpdate time1.aliyun.com

https://www.cnblogs.com/6324TV/p/9063476.html rz sz 使用

1)安装sz rz工具,用于以后用rz sz上传下载文件

yum install ‐y lrzsz
#安装wget
yum install ‐y wget
#下载文件
wget  http://mirrors.aliyun.com/repo/Centos7.repo

2)下载 repo 文件

文件下载地址: http://mirrors.aliyun.com/repo/Centos­7.repo

3)用 rz将下载的 Centos­7.repo文件上传到Linux系统的某个目录下

#输入rz上传
rz

4)备份并替换系统的repo文件

1 cp Centos‐7.repo /etc/yum.repos.d/ 
2 cd /etc/yum.repos.d/ 
3 mv CentOS‐Base.repo CentOS‐Base.repo.bak 
4 mv Centos‐7.repo CentOS‐Base.repo

5)执行yum源更新命令

1 #服务器的包信息下载到本地电脑缓存起来   更新软件源
2 yum clean all && yum makecache && yum update ‐y

2.常用软件安装

1)防火墙

#查看防火墙状态:
firewall-cmd --state
#关闭防火墙:
systemctl stop firewalld.service
#禁止防火墙开机启动: 
systemctl disable firewalld.service
#查看服务是否开机启动:
systemctl is-enabled firewalld.service

2)关闭SELinux

#查看关闭状态
/usr/sbin/sestatus -v
#关闭方法
vim /etc/selinux/config    #把文件里的SELINUX=disabled
#重启服务器
reboot
#启动之后用
/usr/sbin/sestatus -v      #查看selinux的修改状态

3)安装JDK

1. rz

进入指定目录后,用rz 命令上传文件到当前目录

2.安装JDK

rpm ‐ivh jdk‐8u144‐linux‐x64.rpm  #  -ivh  安装时显示安装进度

3. 配置JDK环境变量

修改系统环境变量文件/etc/profile,在文件尾部追加以下内容

export JAVA_HOME=/usr/java/jdk1.8.0_144 
export JRE_HOME=$JAVA_HOME/jre
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

4.生效

#使修改生效
source /etc/profile
#查看系统变量值
echo $PATH
#检查JDK 配置情况shell
java ‐version

4)安装ntp

#安装ntp
yum ‐y install ntp 
#配置定时
crontab ‐e
#追加内容
0 * * * * /usr/sbin/ntpdate time1.aliyun.com >> /tmp/autontpdate 2>&1
crontab
  -e:编辑 crontab 定时任务;
  -l:查询 crontab 定时任务;
  -r:删除当前用户所有的 crontab 定时任务。如果有多个定时任务,只想删除一个,则可以使用“crontab -e”;
  -u 用户名:修改或删除其他用户的 crontab 定时任务。只有 root 用户可用;

5)常用软件安装

yum install ‐y openssh‐server vim gcc gcc‐c++ glibc‐headers bzip2‐devel lzo‐devel curl wget openssh‐clients zlib‐devel autoconf automake cmake libtool openssl‐devel fuse‐devel snappy‐devel telnet unzip zip net‐tools.x86_64 firewalld systemd ntp

6)修改主机名

hostnamectl set‐hostname nn1.hadoop 
#查看主机名
hostname

查看当前操作用户

who am i

4)创建hadoop用户

#创建hadoop用户
useradd hadoop
#给hadoop用户设置密码
000000

#切换用户
su hadoop
#切换root用户
su - root
加入whell组
#1)修改/etc/pam.d/su配置su 时要求用户加入到wheel组
修改/etc/pam.d/su文件,去掉两个#

#2)将hadoop追加到wheel组
gpasswd -a hadoop wheel

[root@nn1 ~]# vim /etc/pam.d/su
#%PAM-1.0
auth            sufficient      pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
auth            sufficient      pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
auth            required        pam_wheel.so use_uid
auth            substack        system-auth
auth            include         postlogin
account         sufficient      pam_succeed_if.so uid = 0 use_uid quiet
account         include         system-auth
password        include         system-auth
session         include         system-auth
session         include         postlogin
session         optional        pam_xauth.so

3)#追加只有wheel组可以su 到root
echo "SU_WHEEL_ONLY yes" >> /etc/login.defs
4)查看是否追加成功
cat /etc/login.defs 

5)配置hadoop host

1.编辑ip

vim /etc/hosts 
#粘贴进去
192.168.1.130 nn1.hadoop
192.168.1.131 nn2.hadoop
192.168.1.132 s1.hadoop
192.168.1.133 s2.hadoop
192.168.1.134 s3.hadoop

2.配置固定IP

ll - 文件详细信息

ls-目录下所有文件夹

#修改静态ip
cd /etc/sysconfig/network-scripts/
#停掉网络
 systemctl stop NetworkManager.service
 systemctl disable NetworkManager.service
 systemctl status NetworkManager.service
#重起网络
systemctl restart network.service
#查看网络 如果有nameserver 就可以上网
 cat /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 114.114.114.114

3.克隆虚拟机

1.修改主机名

#修改ip
cd /etc/sysconfig/network-scripts/
vi ifcfg-ens33

#修改主机名
hostnamectl set‐hostname s3.hadoop 

3.配置ssh免密操作

ssh-keygen -t rsa  #创建rsa公钥
[root@nn1 ~]# mkdir sshkey  创建nn1的公钥文件夹
[root@nn2 ~] # cp ~/.ssh/id_rsa.pub ./nnisshkey  备份一下nn1的公钥
[hadoop@nn1 ~]$ # mv nn1sshkey sshkey/ 
[hadoop@nn1 sshkey]$ cat nn1sshkey >> authorized_keys
[hadoop@nn1 sshkey]$ chmod 600 authorized_keys 

#登录nn2
ssh nn2.hadoop
scp ./id_rsa.pub hadoop@nn1.hadoop:~/sshkey/nn2sshkey
yes  000000
exit#退出当前用户
#切换nn1账户
cat nn2sshkey >> authorized_keys 

#分发公钥
[hadoop@nn1 sshkey]$ scp ./authorized_keys hadoop@nn1.hadoop:~/.ssh/
[hadoop@nn1 sshkey]$ scp ./authorized_keys hadoop@nn2.hadoop:~/.ssh/
[hadoop@nn1 sshkey]$ scp ./authorized_keys hadoop@s1.hadoop:~/.ssh/
[hadoop@nn1 sshkey]$ scp ./authorized_keys hadoop@s2.hadoop:~/.ssh/
[hadoop@nn1 sshkey]$ scp ./authorized_keys hadoop@s3.hadoop:~/.ssh/

#常用权限表示形式 (百度的)
-rw------- (600) 只有拥有者有读写权限。
-rw-r--r-- (644) 只有拥有者有读写权限;而属组用户和其他用户只有读权限。
-rwx------ (700) 只有拥有者有读、写、执行权限。
-rwxr-xr-x (755) 拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限。
-rwx--x--x (711) 拥有者有读、写、执行权限;而属组用户和其他用户只有执行权限。
-rw-rw-rw- (666) 所有用户都有文件读、写权限。
-rwxrwxrwx (777) 所有用户都有读、写、执行权限。

4.批量执行普通命令脚本

[hadoop@nn1 ~]$ mkdir hadoop_base_op
[hadoop@nn1 ~]$ cd hadoop_base_op/

[hadoop@nn1 hadoop_base_op]$ vim ips
"nn1.hadoop" "nn2.hadoop" "s1.hadoop" "s2.hadoop" "s3.hadoop"

[hadoop@nn1 hadoop_base_op]$ vim ssh_all.sh
#!/bin/bash

RUN_HOME=$(cd "$(dirname "$0")";echo "${PWD}")

IP_LIST=(`cat ${RUN_HOME}/ips`)

SSH_USER='hadoop'

for ip in ${IP_LIST[*]} ; do

        f_cmd="ssh ${SSH_USER}@${ip} "$*"";
        echo ${f_cmd};
        if eval ${f_cmd} ; then
                        echo "OK!";
        else
                        echo "FAIL";
        fi;
done;

#   权限
[hadoop@nn1 hadoop_base_op]$ chmod -R 777 ./scp_all.sh 
[hadoop@nn1 hadoop_base_op]$ chmod -R 777 ./ssh_all.sh 
[hadoop@nn1 hadoop_base_op]$ chmod -R 777 ./ssh_root.sh
#批量复制脚本
[hadoop@nn1 hadoop_base_op]$ cp ssh_all.sh scp_all.sh
[hadoop@nn1 hadoop_base_op]$ vim scp_all.sh 
#!/bin/bash

RUN_HOME=$(cd "$(dirname "$0")";echo "${PWD}")

IP_LIST=(`cat ${RUN_HOME}/ips`)

SSH_USER='hadoop'

for ip in ${IP_LIST[*]} ; do

        f_cmd="scp "$1" ${SSH_USER}@${ip}:$2";
        echo ${f_cmd};
        if eval ${f_cmd} ; then
                        echo "OK!";
        else
                        echo "FAIL";
        fi;
done;
#rz上传exe文件
[hadoop@nn1 hadoop_base_op]$ rz

[hadoop@nn1 hadoop_base_op]$ sh scp_all.sh ./exe.sh ~/
#root
[hadoop@nn1 hadoop_base_op]$ cp ssh_all.sh ssh_root.sh
[hadoop@nn1 hadoop_base_op]$ vim ssh_root.sh 

[hadoop@nn1 hadoop_base_op]$ vim ssh_root.sh 
#!/bin/bash

RUN_HOME=$(cd "$(dirname "$0")";echo "${PWD}")

IP_LIST=(`cat ${RUN_HOME}/ips`)

SSH_USER='hadoop'

for ip in ${IP_LIST[*]} ; do

        f_cmd="ssh ${SSH_USER}@${ip} ~/exe.sh "$*"";
        echo ${f_cmd};
        if eval ${f_cmd} ; then
                        echo "OK!";
        else
                        echo "FAIL";
        fi;
done;

#权限
[hadoop@nn1 hadoop_base_op]$ ./ssh_all.sh chmod 770 ~/exe.sh
#更新时间
./ssh_root.sh ntpdate time1.aliyun.com

5.zookpeer集群

cd ..是回到上一级目录

cd . 是当前目录

cd / 是回到根目录

cd ~ 回到用户主目录

#同步时间
./ssh_root.sh ntpdate time1.aliyun.com
#修改zk集群机器数  cp-R只拷贝文件
[hadoop@nn1 ~]$ cp -R hadoop_base_op/ ./zk_base_op
[hadoop@nn1 ~]$ cd zk_base_op/
[hadoop@nn1 zk_base_op]$ vim ips
"nn1.hadoop" "nn2.hadoop" "s1.hadoop"

[hadoop@nn1 zk_base_op]$ mv scp_all.sh zk_scp_all.sh
[hadoop@nn1 zk_base_op]$ mv ssh_all.sh zk_ssh_all.sh
[hadoop@nn1 zk_base_op]$ mv ssh_root.sh zk_ssh_root.sh

#安装zk
cd /tmp
rz -bye
[hadoop@nn1 tmp]$ cd ~
[hadoop@nn1 ~]$ cd zk_base_op/
#分发安装包 
[hadoop@nn1 zk_base_op]$ sh zk_scp_all.sh /tmp/zookeeper-3.4.8.tar.gz /tmp/
#解压
sh zk_ssh_root.sh  tar -zxf /tmp/zookeeper-3.4.8.tar.gz -C /usr/local/
#权限
[hadoop@nn1 zk_base_op]$ sh zk_ssh_root.sh chown -R hadoop:hadoop /usr/local/zookeeper-3.4.8/
#
[hadoop@nn1 zk_base_op]$ sh zk_ssh_root.sh chmod -R 770 /usr/local/zookeeper-3.4.8/
#软连接   为了配置环境变量
[hadoop@nn1 zk_base_op]$ sh zk_ssh_root.sh ln -s /usr/local/zookeeper-3.4.8/ /usr/local/zookeeper

[hadoop@nn1 zk_base_op]$ sh zk_ssh_root.sh chown - hadoop:hadoop /usr/local/zookeeper
#修改配置

[hadoop@nn1 zk_base_op]$ cd /usr/local/zookeeper
[hadoop@nn1 zookeeper]$ cd bin
[hadoop@nn1 bin]$ ll
[hadoop@nn1 bin]$ cd ../conf
[hadoop@nn1 conf]$ mv zoo_sample.cfg ~/
#传自己的配置文件
[hadoop@nn1 conf]$ sh ~/zk_base_op/zk_ssh_all.sh mv /usr/local/zookeeper/conf/zoo_sample.cfg ~/
#
[hadoop@nn1 conf]$ rz
[hadoop@nn1 conf]$ sh ~/zk_base_op/zk_scp_all.sh ./zoo.cfg /usr/local/zookeeper/conf/
#查看配置文件是否存在
[hadoop@nn1 conf]$ sh ~/zk_base_op/zk_ssh_all.sh ls /usr/local/zookeeper/conf/
#创建data目录
[hadoop@nn1 hadoop_base_op]$ ./ssh_root.sh mkdir /data
#修改权限 data改为hadoop用户
[hadoop@nn1 hadoop_base_op]$ sh ssh_root.sh chown -R hadoop:hadoop /data
#创建myid文件夹  设置服务器编号
[hadoop@nn1 data]$ cd /data
[hadoop@nn1 data]$ touch myid &&  echo '1' > myid && cat myid

[hadoop@nn1 data]$ ssh nn2.hadoop
[hadoop@nn2 ~]$ cd /data
[hadoop@nn2 data]$ touch myid &&  echo '2' > myid && cat myid

[hadoop@nn2 data]$ ssh s1.hadoop
[hadoop@ss1 ~]$ cd /data
[hadoop@s1 ~]$ touch myid &&  echo '3' > myid && cat myid
[hadoop@nn1 ~]$ cd zk_base_op/
[hadoop@nn1 zk_base_op]$ ./zk_ssh_all.sh cat /data/myid
ssh hadoop@"nn1.hadoop" cat /data/myid
1
OK!
ssh hadoop@"nn2.hadoop" cat /data/myid
2
OK!
ssh hadoop@"s1.hadoop" cat /data/myid
3
OK!
#配置文件
#修改输出日志配置文件所在目录
[hadoop@nn1 zk_base_op]$ cd /usr/local/zookeeper/bin
[hadoop@nn1 bin]$ vim zkEnv.sh
ZOO_LOG_DIR=/data
#同步
[hadoop@nn1 bin]$ sh ~/zk_base_op/zk_scp_all.sh ./zkEnv.sh /usr/local/zookeeper/bin
#配置环境变量

#set Hadoop Path
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_HOME=${HADOOP_HOME}
export HADOOP_HDFS_HOME=${HADOOP_HOME}
export HADOOP_MAPRED_HOME=${HADOOP_HOME}
export HADOOP_YARN_HOME=${HADOOP_HOME}
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HDFS_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export YARN_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native:/usr/lib64

export HBASE_HOME=/usr/local/hbase
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:15$HADOOP_HOME/sbin:$HBASE_HOME/bin:$HIVE_HOME/bin:/usr/local/zookeeper/bin
[hadoop@nn1 hadoop_base_op]$ ./scp_all.sh /etc/profile /tmp/  
[hadoop@nn1 hadoop_base_op]$ ./ssh_root.sh mv /tmp/profile /etc/

1)zookeeper CRUD

1. 显示根目录下、文件: ls / 使用 ls 命令来查看当前 ZooKeeper 中所包含的内容
2. 显示根目录下、文件: ls2 / 查看当前节点数据并能看到更新次数等数据
3. 创建文件,并设置初始内容: create /zk "test" 创建一个新的 znode节点“ zk ”以及与 它关联的字符串
   create 创建一个新的永久节点, 
   create -e 创建一个临时节点
   create -s,创建一个顺序节点
4. 获取文件内容: get /zk 确认 znode 是否包含我们所创建的字符串
5. 修改文件内容: set /zk "zkbak" 对 zk 所关联的字符串进行设置
6. 删除文件: delete /zk 将刚才创建的 znode 删除
7. 退出客户端: quit
8. 帮助命令: help

2)ZooKeeper 常用四字命令:

ZooKeeper 常用四字命令:

ZooKeeper 支持某些特定的四字命令字母与其的交互。它们大多是查询命令,用来获取 ZooKeeper 服务的当前状态及相关信息。用户在客户端可以通过 telnet 或 nc 向 ZooKeeper 提交相应的命令

1.可以通过命令:echo stat|nc 127.0.0.1 2181 来查看哪个节点被选择作为follower或者 leader

2.使用echo ruok|nc 127.0.0.1 2181 测试是否启动了该Server,若回复imok表示已经启 动。

3.echo dump| nc 127.0.0.1 2181 ,列出未经处理的会话和临时节点。

4.echo kill | nc 127.0.0.1 2181 ,关掉server

5.echo conf | nc 127.0.0.1 2181 ,输出相关服务配置的详细信息。

6.echo cons | nc 127.0.0.1 2181 ,列出所有连接到服务器的客户端的完全的连接 / 会话的 详细信息。

7.echo envi |nc 127.0.0.1 2181 ,输出关于服务环境的详细信息(区别于 conf 命令)。

8.echo reqs | nc 127.0.0.1 2181 ,列出未经处理的请求。

9.echo wchs | nc 127.0.0.1 2181 ,列出服务器 watch 的详细信息。

10.echo wchc | nc 127.0.0.1 2181 ,通过 session 列出服务器 watch 的详细信息,它的输 出是一个与 watch 相关的会话的列表。

11.echo wchp | nc 127.0.0.1 2181 ,通过路径列出服务器 watch 的详细信息。它输出一个 与 session 相关的路径。

3.源码编译

#创建maven仓库地址
[hadoop@nn1 tmp]$ mkdir -p /data/maven/repository
[hadoop@nn1 tmp]$ rz -bye
#解压
[hadoop@nn1 tmp]$ unzip hadoopComplie.zip 

1.yum安装

#安装yum原
yum -y install svn ncurses-devel gcc* lzo-devel zlib-devel autoconf  automake libtool cmake openssl-devel bzip2

2.安装谷歌协议

#解压
[root@nn1 hadoop_c]# tar -zxf protobuf-2.5.0.tar.gz  -C /usr/local
[root@nn1 hadoop_c]# cd /usr/local
[root@nn1 local]# ll
#安装config  c++
[root@nn1 protobuf-2.5.0]# ./configure
[root@nn1 protobuf-2.5.0]#  make install 
#安装到了 /usr/local/lib

3.ant

[root@nn1 hadoop_c]# tar -jxf apache-ant-1.9.9-bin.tar.bz2 -C /usr/local/ 

4.findbus

[root@nn1 hadoop_c]# tar -zxf findbugs-3.0.1.tar.gz -C /usr/local

5.maven

[root@nn1 hadoop_c]# tar -zxf apache-maven-3.3.9-bin.tar.gz -C /usr/local    
[root@nn1 hadoop_c]# cd /usr/local/apache-maven-3.3.9/
[root@nn1 apache-maven-3.3.9]# cd conf/
[root@nn1 conf]# cp /tmp/hadoop_c/settings.xml ./
#解压仓库
[root@nn1 mavenrepo]# unzip mavenrepo.zip 
[root@nn1 mavenrepo]# cd mavenrepo
[root@nn1 mavenrepo]# unzip maven.zip 
[root@nn1 mavenrepo]# mv maven /data/
#修改层库路径
[root@nn1 repositories]# vim /usr/local/apache-maven-3.3.9/conf/settings.xml 

6.snappy

[root@nn1 hadoop_c]# tar -zxf snappy-1.1.3.tar.gz -C /usr/local/
[root@nn1 local]# cd snappy-1.1.3/
[root@nn1 snappy-1.1.3]# ./configure 
[root@nn1 snappy-1.1.3]# make install

7.配置环境变量

vim /etc/profile
#注意从pdf复制过来的------要修改替换
#set Hadoop_compile
export MAVEN_HOME=/usr/local/apache-maven-3.3.9
export FINDBUGS_HOME=/usr/local/findbugs-3.0.1
export PROTOBUF_HOME=/usr/local/protobuf-2.5.0
export ANT_HOME=/usr/local/apache-ant-1.9.9
export PATH=$PATH:$MAVEN_HOME/bin:$FINDBUGS_HOME/bin:$ANT_HOME/bin
export MAVEN_OPTS="-Xmx2g -XX:MaxMetaspaceSize=512M
-XX:ReservedCodeCacheSize=512m"

[root@nn1 snappy-1.1.3]# source /etc/profile

8.maven编译

#解压hadoop
[root@nn1 hadoop_c]# tar -zxf hadoop-2.7.3-src.tar.gz -C /usr/local
[root@nn1 hadoop-2.7.3-src]# mvn clean
#nohub 后台运行
[root@nn1 hadoop-2.7.3-src]# cd /usr/local
[root@nn1 local]# cd hadoop-2.7.3-src/
[root@nn1 hadoop-2.7.3-src]# cd hadoop-common-project/
[root@nn1 hadoop-kms]# mkdir downloads

history历史命令
[root@nn1 hadoop_c]# cp apache-tomcat-6.0.44.tar.gz /usr/local/hadoop-2.7.3-src/hadoop-common-project/hadoop-kms/dowmloads

[root@nn1 hadoop_c]# mkdir -p /usr/local/hadoop-2.7.3-src/hadoop-common-project/hadoop-hdfs-httpfs/dowmloads

[root@nn1 hadoop_c]# cp apache-tomcat-6.0.44.tar.gz /usr/local/hadoop-2.7.3-src/hadoop-common-project/hadoop-hdfs-httpfs/dowmloads
#编译  必须在有pom文件下执行 mvn命令
[root@nn1 hadoop_c]# cd /usr/local/hadoop-2.7.3-src/
[root@nn1 hadoop-2.7.3-src]# nohup mvn clean package -Pdist,native -DskipTests -Dtar -Dbundle.snappy -Dsnappy.lib=/usr/local/lib > /tmp/hadoop_log 2>&1 &

tail -f /tmp/hadoop_log

[root@nn1 hadoop-2.7.3-src]# cd /usr/local/hadoop-2.7.3-src/hadoop-dist/

部署hadoop

[hadoop@nn1 hadoop_base_op]$ ./scp_all.sh /tmp/hadoop-2.7.3.tar.gz /tmp/

[hadoop@nn1 hadoop_base_op]$ ./ssh_root.sh  tar -zxf /tmp/hadoop-2.7.3.tar.gz  -C /usr/local/

[hadoop@nn1 hadoop_base_op]$ ./ssh_all.sh ls -l /usr/local/

#权限
[hadoop@nn1 hadoop_base_op]$ ./ssh_root.sh chown -R hadoop:hadoop /usr/local/hadoop-2.7.3
#创建软连接
[hadoop@nn1 hadoop_base_op]$ ./ssh_root.sh ln -s /usr/local/hadoop-2.7.3 /usr/local/hadoop   
#检车是否成功
[hadoop@nn1 local]$ hadoop checknative
版权声明:原创作品,允许转载,转载时务必以超链接的形式表明出处和作者信息。否则将追究法律责任。来自海汼部落-123456789987654321,http://hainiubl.com/topics/75161
点赞
成为第一个点赞的人吧 :bowtie:
回复数量: 1
  • 青牛 国内首批大数据从业者,就职于金山,担任大数据团队核心研发工程师
    2020-06-27 12:48:52

    不错不错,格式公正,以后可以把自己遇到的坑也写上。另外同学你的打赏码是不可用的你重新上传一个。

暂无评论~~
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,可用Emoji的自动补全, 在输入的时候只需要 ":" 就可以自动提示了 :metal: :point_right: 表情列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif,教程
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
Ctrl+Enter