首页 > 其他分享 >(一)elasticsearch 编译和启动

(一)elasticsearch 编译和启动

时间:2022-12-23 10:33:30浏览次数:60  
标签:12 启动 19 tiger 编译 elasticsearch 2022 22T11

1.准备

先从github官网上clone elasticsearch源码到本地,选择合适的分支。笔者这里选用的是7.4.0(与笔者工作环境使用的分支一致),此版本编译需要jdk11。

2.编译

Readme 中说明了编译命令

./gradlew assemble

执行此命令,等待1h左右即可,根据机器性能可能会有差异

> Task :x-pack:plugin:sql:qa:compileJava
注: /Users/yuanzhongming/IdeaProjects/elasticsearch-my/x-pack/plugin/sql/qa/src/main/java/org/elasticsearch/xpack/sql/qa/jdbc/CsvTestUtils.java使用或覆盖了已过时的 API。
注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。

BUILD SUCCESSFUL in 52m 0s
947 actionable tasks: 946 executed, 1 up-to-date

 编译过程中可能会遇到的问题:

FAILURE: Build failed with an exception.

* What went wrong:
a problem occurred running Docker from [/usr/local/bin/docker] yet it is required to run the following tasks: 
  :distribution:docker:buildDockerImage
  :distribution:docker:buildOssDockerImage
the problem is that Docker exited with exit code [1] with standard error output [Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?]
you can address this by attending to the reported issue, removing the offending tasks from being executed, or by passing -Dbuild.docker=false

 新版本 elasticsearch 编译过程依赖docker,启动docker后台或者注释掉以下代码

文件路径:/distribution/docker/build.gradle

void addBuildDockerImage(final boolean oss) {
//  final Task buildDockerImageTask = task(taskName("build", oss, "DockerImage"), type: LoggedExec) {
//    dependsOn taskName("copy", oss, "DockerContext")
//    List<String> tags
//    if (oss) {
//      tags = [
//        "docker.elastic.co/elasticsearch/elasticsearch-oss:${VersionProperties.elasticsearch}",
//        "elasticsearch-oss:test"
//      ]
//    } else {
//      tags = [
//        "elasticsearch:${VersionProperties.elasticsearch}",
//        "docker.elastic.co/elasticsearch/elasticsearch:${VersionProperties.elasticsearch}",
//        "docker.elastic.co/elasticsearch/elasticsearch-full:${VersionProperties.elasticsearch}",
//        "elasticsearch:test",
//      ]
//    }
//    executable 'docker'
//    final List<String> dockerArgs = ['build', files(oss), '--pull', '--no-cache']
//    for (final String tag : tags) {
//      dockerArgs.add('--tag')
//      dockerArgs.add(tag)
//    }
//    args dockerArgs.toArray()
//  }
//  BuildPlugin.requireDocker(buildDockerImageTask)
}

for (final boolean oss : [false, true]) {
  addCopyDockerContextTask(oss)
  addBuildDockerImage(oss)
}

//assemble.dependsOn "buildOssDockerImage"
//assemble.dependsOn "buildDockerImage"

3.启动

启动elasticsearch 服务,启动类是 org.elasticsearch.bootstrap.Elasticsearch

启动过程中可能会出现的问题:

问题1:

the system property [es.path.conf] must be set

在vm启动项加入参数:-Des.path.conf=/Users/xxx/IdeaProjects/elasticsearch-my/config,然后将配置文件elasticsearch.yaml ,log4j2.properties, modules 复制到这个目录

项目中有配置文件的例子

笔者是这样配置的

# Use a descriptive name for your cluster:
#
cluster.name: my-application
#
# ------------------------------------ Node ------------------------------------
#
# Use a descriptive name for the node:
#
node.name: tiger
#
# Add custom attributes to the node:
#
#node.attr.rack: r1
#
# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#
path.data: /Users/yuanzhongming/IdeaProjects/elasticsearch-my/home/data
#
# Path to log files:
#
path.logs: /Users/yuanzhongming/IdeaProjects/elasticsearch-my/home/data

modules 包在发行版elasticsearch中可以找到,这里就不自行编译了

问题2:

Exception in thread "main" java.lang.IllegalStateException: path.home is not configured
	at org.elasticsearch.env.Environment.<init>(Environment.java:104)
	at org.elasticsearch.env.Environment.<init>(Environment.java:95)
	at org.elasticsearch.node.InternalSettingsPreparer.prepareEnvironment(InternalSettingsPreparer.java:69)
	at org.elasticsearch.cli.EnvironmentAwareCommand.createEnv(EnvironmentAwareCommand.java:95)
	at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
	at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:125)
	at org.elasticsearch.cli.Command.main(Command.java:90)
	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:115)
	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92)

同样的,在vm参数中设定home地址即可,-Des.path.home=/Users/xxx/IdeaProjects/elasticsearch-my/home

问题3:

no log4j2.properties found; tried [/Users/yuanzhongming/IdeaProjects/elasticsearch-my/config] and its subdirectories

 

同问题1,没有复制log4j2.properties引起的问题

问题4:

java.lang.NoClassDefFoundError: org/elasticsearch/plugins/ExtendedPluginsClassLoader

找到

compileOnly project(':libs:elasticsearch-plugin-classloader')

修改为

compile project(':libs:elasticsearch-plugin-classloader')

问题5:

Caused by: org.elasticsearch.ElasticsearchException: Failure running machine learning native code. This could be due to running on an unsupported OS or distribution, missing OS libraries, or a problem with the temp directory. To bypass this problem by running Elasticsearch without machine learning functionality set [xpack.ml.enabled: false].

意思是我的机器不支持机器学习,把modules中的插件 x-pack-ml 去掉就行

最后启动完成如下

[2022-12-22T11:19:36,704][INFO ][o.e.p.PluginsService     ] [tiger] loaded module [x-pack-sql]
[2022-12-22T11:19:36,705][INFO ][o.e.p.PluginsService     ] [tiger] loaded module [x-pack-voting-only-node]
[2022-12-22T11:19:36,705][INFO ][o.e.p.PluginsService     ] [tiger] loaded module [x-pack-watcher]
[2022-12-22T11:19:36,706][INFO ][o.e.p.PluginsService     ] [tiger] no plugins loaded
[2022-12-22T11:19:37,238][INFO ][i.n.u.i.PlatformDependent] [tiger] Your platform does not provide complete low-level API for accessing direct buffers reliably. Unless explicitly requested, heap buffer will always be preferred to avoid potential system instability.
[2022-12-22T11:19:43,453][DEBUG][o.e.a.ActionModule       ] [tiger] Using REST wrapper from plugin org.elasticsearch.xpack.security.Security
[2022-12-22T11:19:43,530][INFO ][i.n.u.i.PlatformDependent] [tiger] Your platform does not provide complete low-level API for accessing direct buffers reliably. Unless explicitly requested, heap buffer will always be preferred to avoid potential system instability.
[2022-12-22T11:19:43,914][INFO ][o.e.d.DiscoveryModule    ] [tiger] using discovery type [zen] and seed hosts providers [settings]
[2022-12-22T11:19:45,141][INFO ][o.e.n.Node               ] [tiger] initialized
[2022-12-22T11:19:45,142][INFO ][o.e.n.Node               ] [tiger] starting ...
[2022-12-22T11:19:45,383][INFO ][o.e.t.TransportService   ] [tiger] publish_address {127.0.0.1:9300}, bound_addresses {[::1]:9300}, {127.0.0.1:9300}
[2022-12-22T11:19:45,417][WARN ][o.e.b.BootstrapChecks    ] [tiger] initial heap size [268435456] not equal to maximum heap size [4294967296]; this can cause resize pauses and prevents mlockall from locking the entire heap
[2022-12-22T11:19:45,418][WARN ][o.e.b.BootstrapChecks    ] [tiger] the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
[2022-12-22T11:19:45,425][INFO ][o.e.c.c.Coordinator      ] [tiger] cluster UUID [hhUOjQTPTxC11orp9ptAoQ]
[2022-12-22T11:19:45,450][INFO ][o.e.c.c.ClusterBootstrapService] [tiger] no discovery configuration found, will perform best-effort cluster bootstrapping after [3s] unless existing master is discovered
[2022-12-22T11:19:45,588][INFO ][o.e.c.s.MasterService    ] [tiger] elected-as-master ([1] nodes joined)[{tiger}{alQTCfqOStya2j1epxaskQ}{qDAgKIDeTmCbif0-EDJ0FA}{127.0.0.1}{127.0.0.1:9300}{dim}{xpack.installed=true} elect leader, _BECOME_MASTER_TASK_, _FINISH_ELECTION_], term: 2, version: 18, reason: master node changed {previous [], current [{tiger}{alQTCfqOStya2j1epxaskQ}{qDAgKIDeTmCbif0-EDJ0FA}{127.0.0.1}{127.0.0.1:9300}{dim}{xpack.installed=true}]}
[2022-12-22T11:19:45,733][INFO ][o.e.c.s.ClusterApplierService] [tiger] master node changed {previous [], current [{tiger}{alQTCfqOStya2j1epxaskQ}{qDAgKIDeTmCbif0-EDJ0FA}{127.0.0.1}{127.0.0.1:9300}{dim}{xpack.installed=true}]}, term: 2, version: 18, reason: Publication{term=2, version=18}
[2022-12-22T11:19:45,796][INFO ][o.e.h.AbstractHttpServerTransport] [tiger] publish_address {127.0.0.1:9200}, bound_addresses {[::1]:9200}, {127.0.0.1:9200}
[2022-12-22T11:19:45,797][INFO ][o.e.n.Node               ] [tiger] started
[2022-12-22T11:19:46,175][INFO ][o.e.l.LicenseService     ] [tiger] license [003ac67e-0dd0-42ee-8b76-59e2c21c444a] mode [basic] - valid
[2022-12-22T11:19:46,175][INFO ][o.e.x.s.s.SecurityStatusChangeListener] [tiger] Active license is now [BASIC]; Security is disabled
[2022-12-22T11:19:46,184][INFO ][o.e.g.GatewayService     ] [tiger] recovered [0] indices into cluster_state

这里推荐一个chrome下的小插件elaticsearch-head,可视化当前集群的状态

4.参考列表

https://www.cnblogs.com/Jackeyzhe/p/13352543.html 

标签:12,启动,19,tiger,编译,elasticsearch,2022,22T11
From: https://www.cnblogs.com/darcy-yuan/p/16997682.html

相关文章

  • C 语言的编译,干货有点多!
    本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注!作者|慕课网精英讲师张磊今天这篇文章我们来聊聊C语言的编译器。1.C语言编译器每个语言都需要编译器,......
  • Mac VSCode启动提示(无法在合理的时间内解析shell)
    问题描述VSCode启动提示:无法在合理的时间内解析shell原因分析nvm如果在shell初始化期间运行,会导致shell启动时间变慢解决方法修改文件~/.bash_profilefunctionlo......
  • 解决APK Easy Tool编译问题
    ApkTool是编译、反编译的神器,但缺少界面操作不太友好,网友特地制作了GUI工具。但在编译过程出现了三个问题:问题1:W:invalidresourcedirectoryname:XXX\resnavigatio......
  • Ubuntu:Docker启动与停止
    安装完成Docker后,默认已经启动了docker服务,如需手动控制docker服务的启停,可执行如下命令启动dockersudoservicedockerstart停止dockersudoservicedockerstop......
  • Android编译脚本添加kernel编译选项传入宏定义
    Android系统开发时针对不同产品(硬件)差异,驱动层需要做逻辑区分,需要获取当前产品平台信息做客制化处理,其中一种方式是编译时通过编译选项KCFLAGS=-DXXXX传入宏定义给kernel使......
  • Elasticsearch多主、多数据、多协调、多冷节点说明及配置(一)
    最近因为客户项目需要,所以专门调研了Elasticsearch的这些不常用的重要功能,并整理成文档,现在分享出来,希望对有这方面需求的同行有些帮助由于内容较多,一共分为三部分分享Elast......
  • Win10使用管理员方式开机启动程序
    1、打开任务计划程序右键“此电脑”,选择“管理”,进入“计算机管理”页面。点击“系统工具”中的“任务计划程序”。2、创建任务在“任务计划任务”面板右侧,点击“创建......
  • linux程序开机自动启动
    linux如果需要实现开机启动,可以找到$HOME/.config/autostart目录(没有的话新建一个),在该文件夹下创建一个空文件,文件名自拟,后缀必须是desktop,如:dingdang.desktop。用......
  • 添加启动类
     添加.h和cpp#pragmaonce#include"afxwin.h"classmySplash:publicCWnd{DECLARE_DYNAMIC(mySplash)protected:DECLARE_MESSAGE_MAP()public:CBitmap......
  • Nacos集群启动注意事项
    简介Nacos是阿里巴巴开源的一套服务注册发现的应用使用简单灵活,是springCloudAlibaba的组成部分现在拆分微服务的部署情况下,极大的需求nacos服务作为支撑单点情况......