# 1 安装插件: 

elasticsearch-plugin install repository-hdfs 


# 2 移除插件: 

elasticsearch-plugin remove repository-hdfs 


# 3 查看es集群nodes 

curl -XGET 'http://es02:9200/_cat/nodes?pretty' 


# 4 查看es集群健康状况 

curl -XGET 'http://es02:9200/_cluster/health?pretty' 


# 5 查看es集群索引 

curl -XGET 'es02:9200/_cat/indices?v' 


# 6 在hdfs上创建snapshot仓库 

curl -XPUT 'http://es02:9200/_snapshot/my_hdfs_repo?pretty' -d ' 

{ 

  "type": "hdfs", 

  "settings": { 

    "uri": "hdfs://es01:9000/", 

    "path": "hadoop/respositories/my_hdfs_repo" 

  } 

}' 


# 7 备份数据 

curl -XPUT es02:9200/_snapshot/my_hdfs_repo/snapshot_2 -d' 

{ 

    "indices": "my_index", 

 "ignore_unavailable": true, 

 "include_global_state": false, 

 "partial": true 

}' 

返回{"accepted":true} 


indices值中可以加逗号隔开多个索引,ignore_unavailable设置为true会忽略掉不可用的index,include_global_state阻止cluster的全局state也作为snapshot的一部分被备份, 

默认情况下,如果某个索引的部分primary shard不可用,那么会导致备份过程失败,那么此时可以将partial设置为true。 


# 8 查看指定的备份: 

curl -XGET 'http://es02:9200/_snapshot/my_hdfs_repo/snapshot_1?pretty' 

返回 

{ 

  "snapshots" : [ 

    { 

      "snapshot" : "snapshot_1", 

      "uuid" : "K2N0N24sR0SqfiYiY9gdKA", 

      "version_id" : 5050099, 

      "version" : "5.5.0", 

      "indices" : [ 

        "my_index" 

      ], 

      "state" : "SUCCESS", 

      "start_time" : "2018-05-27T03:54:52.866Z", 

      "start_time_in_millis" : 1527393292866, 

      "end_time" : "2018-05-27T03:54:55.044Z", 

      "end_time_in_millis" : 1527393295044, 

      "duration_in_millis" : 2178, 

      "failures" : [ ], 

      "shards" : { 

        "total" : 5, 

        "failed" : 0, 

        "successful" : 5 

      } 

    } 

  ] 

} 



# 9 删除陈旧的备份快照: 

curl -XDELETE 'http://es02:9200/_snapshot/my_hdfs_repo/snapshot_1' 


10、监控snapshotting的进度 


使用wait_for_completion可以在前台等待备份完成,但是实际上也没什么必要,因为可能要备份的数据量特别大,难道还等待1个小时?? 

看着是不太现实的,所以一般还是在后台运行备份过程,然后使用另外一个监控api来查看备份的进度, 

首先可以获取一个snapshot ID:GET _snapshot/my_backup/snapshot_3。如果这个snapshot还在备份过程中, 

此时我们就可以看到一些信息,比如什么时候开始备份的,已经运行了多长时间,等等。然而,这个api用了跟snapshot一样的线程池去执行, 

如果我们在备份非常大的shard,进度的更新可能会非常之慢。一个更好的选择是用_status API,GET _snapshot/my_backup/snapshot_3/_status, 

这个api立即返回最详细的数据。这里我们可以看到总共有几个shard在备份,已经完成了几个,还剩下几个,包括每个索引的shard的备份进度: 


curl -XGET 'http://es02:9200/_snapshot/my_hdfs_repo/snapshot_1' 
11、取消snapshotting备份过程
如果我们想要取消一个正在执行的snapshotting备份过程,比如我们发现备份时间过于长,希望先取消然后在晚上再运行, 

或者是因为不小心误操作发起了一次备份操作,这个时候就可以运行下面这条命令:DELETE _snapshot/my_backup/snapshot_1。 

也就是立即删除这个snapshot,这个命令会去取消snapshot的过程,同时将备份了一半的仓库中的数据给删除掉。 


curl -XDELETE 'http://es02:9200/_snapshot/my_hdfs_repo/snapshot_1' 


#hadoop namenode格式化 

hdfs namenode -format 


#hadoop查看文件 

hadoop dfs -ls / 


#hadoop离开安全模式 

hadoop dfsadmin -safemode leave 


#hadoop修改用户所属的租 

hadoop fs -chgrp -R hadoop /