mirror of
https://github.com/apache/impala.git
synced 2025-12-19 18:12:08 -05:00
IMPALA-13064: Install service for linux packaging
This patch provides LSB-compliant init scripts for impala package, administrator can manage impala services by the following commands: 'service <impala_service> <start|stop|restart|status|force-reload' This patch also change the owner of package files to 'impala', and launch process by the same user. Testing: - Manually deploy package on Ubuntu22.04 and verify it. Change-Id: If202e91e4b05adbc96cd5c556654901d2f7ca9fe Reviewed-on: http://gerrit.cloudera.org:8080/21994 Reviewed-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com> Tested-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com>
This commit is contained in:
committed by
Impala Public Jenkins
parent
086e0b0ffa
commit
4ba6f9b5a5
@@ -71,6 +71,20 @@ endif()
|
|||||||
install(DIRECTORY bin/ DESTINATION ${IMPALA_INSTALLDIR}/bin
|
install(DIRECTORY bin/ DESTINATION ${IMPALA_INSTALLDIR}/bin
|
||||||
USE_SOURCE_PERMISSIONS FILES_MATCHING PATTERN "*.sh")
|
USE_SOURCE_PERMISSIONS FILES_MATCHING PATTERN "*.sh")
|
||||||
install(DIRECTORY conf/ DESTINATION ${IMPALA_INSTALLDIR}/conf)
|
install(DIRECTORY conf/ DESTINATION ${IMPALA_INSTALLDIR}/conf)
|
||||||
|
install(FILES
|
||||||
|
etc/init.d/impalad
|
||||||
|
etc/init.d/catalogd
|
||||||
|
etc/init.d/admissiond
|
||||||
|
etc/init.d/statestored
|
||||||
|
DESTINATION /etc/init.d/
|
||||||
|
PERMISSIONS
|
||||||
|
OWNER_READ
|
||||||
|
OWNER_WRITE
|
||||||
|
OWNER_EXECUTE
|
||||||
|
GROUP_READ
|
||||||
|
GROUP_EXECUTE
|
||||||
|
WORLD_READ
|
||||||
|
WORLD_EXECUTE)
|
||||||
|
|
||||||
# packaging
|
# packaging
|
||||||
option(BUILD_PACKAGES "Build deployment packages")
|
option(BUILD_PACKAGES "Build deployment packages")
|
||||||
@@ -134,4 +148,10 @@ else()
|
|||||||
set(CPACK_DEBIAN_PACKAGE_DEPENDS ${PKG_LIST})
|
set(CPACK_DEBIAN_PACKAGE_DEPENDS ${PKG_LIST})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (${CPACK_GENERATOR} MATCHES "RPM")
|
||||||
|
set(CPACK_RPM_POST_INSTALL_SCRIPT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/postinst")
|
||||||
|
else()
|
||||||
|
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_SOURCE_DIR}/postinst")
|
||||||
|
endif()
|
||||||
|
|
||||||
include(CPack)
|
include(CPack)
|
||||||
|
|||||||
@@ -75,7 +75,9 @@ stop_await() {
|
|||||||
for ((i=1; ${counts} == -1 || i<=${counts}; i++)); do
|
for ((i=1; ${counts} == -1 || i<=${counts}; i++)); do
|
||||||
[[ ${i} -gt 1 ]] && sleep ${period}
|
[[ ${i} -gt 1 ]] && sleep ${period}
|
||||||
if ! kill -0 ${pid} &> /dev/null; then
|
if ! kill -0 ${pid} &> /dev/null; then
|
||||||
rm ${service_pidfile} && echo "(${i}/${counts}) ${service} is stopped." && return 0
|
rm -f ${service_pidfile} &&\
|
||||||
|
echo "(${i}/${counts}) ${service} is stopped." &&\
|
||||||
|
return 0
|
||||||
else
|
else
|
||||||
echo "(${i}/${counts}) Waiting ${service} to stop."
|
echo "(${i}/${counts}) Waiting ${service} to stop."
|
||||||
fi
|
fi
|
||||||
@@ -115,7 +117,7 @@ stop() {
|
|||||||
fi
|
fi
|
||||||
local pid=$(cat ${service_pidfile})
|
local pid=$(cat ${service_pidfile})
|
||||||
if ! ps -p ${pid} -o comm=|grep ${service} &> /dev/null ; then
|
if ! ps -p ${pid} -o comm=|grep ${service} &> /dev/null ; then
|
||||||
rm ${service_pidfile}
|
rm -f ${service_pidfile}
|
||||||
echo "Already stopped: ${service} is not running with PID ${pid}." \
|
echo "Already stopped: ${service} is not running with PID ${pid}." \
|
||||||
"Removed stale file '${service_pidfile}'."
|
"Removed stale file '${service_pidfile}'."
|
||||||
return 0
|
return 0
|
||||||
|
|||||||
41
package/etc/init.d/admissiond
Executable file
41
package/etc/init.d/admissiond
Executable file
@@ -0,0 +1,41 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
# or more contributor license agreements. See the NOTICE file
|
||||||
|
# distributed with this work for additional information
|
||||||
|
# regarding copyright ownership. The ASF licenses this file
|
||||||
|
# to you under the Apache License, Version 2.0 (the
|
||||||
|
# "License"); you may not use this file except in compliance
|
||||||
|
# with the License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing,
|
||||||
|
# software distributed under the License is distributed on an
|
||||||
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
# KIND, either express or implied. See the License for the
|
||||||
|
# specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
#
|
||||||
|
### BEGIN INIT INFO
|
||||||
|
# Provides: admissiond
|
||||||
|
# Default-Start: 2 3 4 5
|
||||||
|
# Default-Stop: 0 1 6
|
||||||
|
# Should-Start: $time $network
|
||||||
|
# Should-Stop: $time $network
|
||||||
|
# Short-Description: Apache Impala admission service
|
||||||
|
### END INIT INFO
|
||||||
|
|
||||||
|
IMPALA_HOME=/opt/impala
|
||||||
|
IMPALA_SHELL_CMD=${IMPALA_HOME}/bin/impala.sh
|
||||||
|
IMPALA_SERVICE=admissiond
|
||||||
|
|
||||||
|
main() {
|
||||||
|
case ${1} in
|
||||||
|
start|stop|restart|status) su impala -s /bin/bash -c "${IMPALA_SHELL_CMD} ${1} ${IMPALA_SERVICE}" ;;
|
||||||
|
force-reload) su impala -s /bin/sh -c "${IMPALA_SHELL_CMD} restart ${IMPALA_SERVICE}" ;;
|
||||||
|
*) exit 2 ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
main ${@}
|
||||||
41
package/etc/init.d/catalogd
Executable file
41
package/etc/init.d/catalogd
Executable file
@@ -0,0 +1,41 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
# or more contributor license agreements. See the NOTICE file
|
||||||
|
# distributed with this work for additional information
|
||||||
|
# regarding copyright ownership. The ASF licenses this file
|
||||||
|
# to you under the Apache License, Version 2.0 (the
|
||||||
|
# "License"); you may not use this file except in compliance
|
||||||
|
# with the License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing,
|
||||||
|
# software distributed under the License is distributed on an
|
||||||
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
# KIND, either express or implied. See the License for the
|
||||||
|
# specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
#
|
||||||
|
### BEGIN INIT INFO
|
||||||
|
# Provides: catalogd
|
||||||
|
# Default-Start: 2 3 4 5
|
||||||
|
# Default-Stop: 0 1 6
|
||||||
|
# Should-Start: $time $network
|
||||||
|
# Should-Stop: $time $network
|
||||||
|
# Short-Description: Apache Impala catalog service
|
||||||
|
### END INIT INFO
|
||||||
|
|
||||||
|
IMPALA_HOME=/opt/impala
|
||||||
|
IMPALA_SHELL_CMD=${IMPALA_HOME}/bin/impala.sh
|
||||||
|
IMPALA_SERVICE=catalogd
|
||||||
|
|
||||||
|
main() {
|
||||||
|
case ${1} in
|
||||||
|
start|stop|restart|status) su impala -s /bin/bash -c "${IMPALA_SHELL_CMD} ${1} ${IMPALA_SERVICE}" ;;
|
||||||
|
force-reload) su impala -s /bin/sh -c "${IMPALA_SHELL_CMD} restart ${IMPALA_SERVICE}" ;;
|
||||||
|
*) exit 2 ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
main ${@}
|
||||||
41
package/etc/init.d/impalad
Executable file
41
package/etc/init.d/impalad
Executable file
@@ -0,0 +1,41 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
# or more contributor license agreements. See the NOTICE file
|
||||||
|
# distributed with this work for additional information
|
||||||
|
# regarding copyright ownership. The ASF licenses this file
|
||||||
|
# to you under the Apache License, Version 2.0 (the
|
||||||
|
# "License"); you may not use this file except in compliance
|
||||||
|
# with the License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing,
|
||||||
|
# software distributed under the License is distributed on an
|
||||||
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
# KIND, either express or implied. See the License for the
|
||||||
|
# specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
#
|
||||||
|
### BEGIN INIT INFO
|
||||||
|
# Provides: impalad
|
||||||
|
# Default-Start: 2 3 4 5
|
||||||
|
# Default-Stop: 0 1 6
|
||||||
|
# Should-Start: $time $network
|
||||||
|
# Should-Stop: $time $network
|
||||||
|
# Short-Description: Apache Impala daemon service
|
||||||
|
### END INIT INFO
|
||||||
|
|
||||||
|
IMPALA_HOME=/opt/impala
|
||||||
|
IMPALA_SHELL_CMD=${IMPALA_HOME}/bin/impala.sh
|
||||||
|
IMPALA_SERVICE=impalad
|
||||||
|
|
||||||
|
main() {
|
||||||
|
case ${1} in
|
||||||
|
start|stop|restart|status) su impala -s /bin/bash -c "${IMPALA_SHELL_CMD} ${1} ${IMPALA_SERVICE}" ;;
|
||||||
|
force-reload) su impala -s /bin/sh -c "${IMPALA_SHELL_CMD} restart ${IMPALA_SERVICE}" ;;
|
||||||
|
*) exit 2 ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
main ${@}
|
||||||
41
package/etc/init.d/statestored
Executable file
41
package/etc/init.d/statestored
Executable file
@@ -0,0 +1,41 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
# or more contributor license agreements. See the NOTICE file
|
||||||
|
# distributed with this work for additional information
|
||||||
|
# regarding copyright ownership. The ASF licenses this file
|
||||||
|
# to you under the Apache License, Version 2.0 (the
|
||||||
|
# "License"); you may not use this file except in compliance
|
||||||
|
# with the License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing,
|
||||||
|
# software distributed under the License is distributed on an
|
||||||
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
# KIND, either express or implied. See the License for the
|
||||||
|
# specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
#
|
||||||
|
### BEGIN INIT INFO
|
||||||
|
# Provides: statestored
|
||||||
|
# Default-Start: 2 3 4 5
|
||||||
|
# Default-Stop: 0 1 6
|
||||||
|
# Should-Start: $time $network
|
||||||
|
# Should-Stop: $time $network
|
||||||
|
# Short-Description: Apache Impala statestore service
|
||||||
|
### END INIT INFO
|
||||||
|
|
||||||
|
IMPALA_HOME=/opt/impala
|
||||||
|
IMPALA_SHELL_CMD=${IMPALA_HOME}/bin/impala.sh
|
||||||
|
IMPALA_SERVICE=statestored
|
||||||
|
|
||||||
|
main() {
|
||||||
|
case ${1} in
|
||||||
|
start|stop|restart|status) su impala -s /bin/bash -c "${IMPALA_SHELL_CMD} ${1} ${IMPALA_SERVICE}" ;;
|
||||||
|
force-reload) su impala -s /bin/sh -c "${IMPALA_SHELL_CMD} restart ${IMPALA_SERVICE}" ;;
|
||||||
|
*) exit 2 ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
main ${@}
|
||||||
26
package/postinst
Normal file
26
package/postinst
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
# or more contributor license agreements. See the NOTICE file
|
||||||
|
# distributed with this work for additional information
|
||||||
|
# regarding copyright ownership. The ASF licenses this file
|
||||||
|
# to you under the Apache License, Version 2.0 (the
|
||||||
|
# "License"); you may not use this file except in compliance
|
||||||
|
# with the License. You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing,
|
||||||
|
# software distributed under the License is distributed on an
|
||||||
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
# KIND, either express or implied. See the License for the
|
||||||
|
# specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
IMPALA_USER=impala
|
||||||
|
IMPALA_GROUP=impala
|
||||||
|
IMPALA_HOME=/opt/impala
|
||||||
|
groupadd -f ${IMPALA_GROUP}
|
||||||
|
id -u ${IMPALA_USER} &> /dev/null || useradd -g ${IMPALA_GROUP} ${IMPALA_USER}
|
||||||
|
chown -R ${IMPALA_USER}:${IMPALA_GROUP} ${IMPALA_HOME}
|
||||||
Reference in New Issue
Block a user