记一次ubuntu开机启动Hadoop Hbase Elasticsearch脚本编写遇到的坑(版本号16.04)

首先,感谢和我一起研究出来的同事XC。

我的linux版本号是

公司的写字楼经常喜欢作妖停电,为了保证公司(装逼用)的Hbase伪分布式集群正常开机自启动,决定自己研究下。

首先编写一个启动脚本,例如start.sh放到指定目录下(这里我放到/opt下面)

这是脚本的内容

#!/bin/sh

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

nohup sudo -u hadoop bash /usr/local/hadoop/sbin/start-dfs.sh
nohup sudo -u hadoop bash /usr/local/hbase/bin/start-hbase.sh
sudo -u hadoop bash /usr/local/elasticsearch/bin/elasticsearch -d


exit 0

说明:

1、因为Elasticsearch有后台自启动命令,就没采用nohup命令;

2、sudo -u hadoop 是我当前登录的用户名,加上Elasticsearch不能在root用户下启动,需要切换用户;

3、记得将环境的配置到脚本中,以防万一。

保存好编写的脚本后,记得修改脚本的权限和文件所有者:

sudo chmod 755 /opt

sudo chmod +x /opt/start.sh

sudo chown -R 当前用户名 /opt/start.sh

到此,启动脚本已经编写完毕,可以测试当前脚本能否启动Hadoop、HBase和Elasticsearch

进入/opt目录

./start.sh

可以看到根据当前脚本的命令,所有的服务已经启动了。

接下来,需要修改/etc/rc.local文件

我将文件开头的/bin/sh改为了

/bin/bash

将需要开机运行的脚本添加到exit 0前面保存即可

sh /opt/start.sh

exit 0

坑点:

1、启动Hadoop时,nohup.out中提示Error: JAVA_HOME is not set and could not be found.

这是由于Hadoop未设置JAVA_HOME导致,请在Hadoop安装目录中找到hadoop-env.sh文件,修改其中export JAVA_HOME=${JAVA_HOME}的配置,将“=”后面的值改为当前系统JAVA_HOME的绝对路径

(HBase我在安装时已经配置了hbase-env.sh的JAVA_HOME路径,所以没遇到这个报错,遇到的话可以参考看能否解决)

2、开机运行start.sh脚本后,Elasticsearch进程通过jps命令看到了,但过一会儿就消失了,查看Elasticsearch的启动日志elasticsearch.log时,报错为max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]:

但是我的机器环境中已经修改了/etc/security/limits.conf的最后内容为

如果不是开机运行脚本启动,而是开机后直接运行elasticsearch -d或者刚刚编写的脚本启动时,Elasticsearch均能正常启动,经过查找,在这个博客中找到了答案

Ubuntu18配置elasticsearch服务开机自启踩坑

修改 /etc/systemd/user.conf 及 /etc/systemd/system.conf 中如下面这行的配置项(这将处理图形登录):

DefaultLimitNOFILE=65536

修改后保存即可。

3、运行sudo -u hadoop bash /usr/local/elasticsearch/bin/elasticsearch -d命令时提示:

could not find java; set JAVA_HOME or ensure java is in PATH

但是/etc/profile的JAVA_HOME是正常配置的情况下,请编辑elasticsearch-env文件中代码,配置正确的JAVA_HOME

# now set the path to java
JAVA_HOME=本机jdk路径 #就是在if前配置下本机jdk路径
if [ -x "$JAVA_HOME/bin/java" ]; then
  JAVA="$JAVA_HOME/bin/java"
else
  set +e
  JAVA=`which java`
  set -e
fi

至此,可以重启服务器体验开机启动的快乐了。

希望能帮到有遇到同样问题的你。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值