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
|
||||
USE_SOURCE_PERMISSIONS FILES_MATCHING PATTERN "*.sh")
|
||||
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
|
||||
option(BUILD_PACKAGES "Build deployment packages")
|
||||
@@ -134,4 +148,10 @@ else()
|
||||
set(CPACK_DEBIAN_PACKAGE_DEPENDS ${PKG_LIST})
|
||||
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)
|
||||
|
||||
@@ -75,7 +75,9 @@ stop_await() {
|
||||
for ((i=1; ${counts} == -1 || i<=${counts}; i++)); do
|
||||
[[ ${i} -gt 1 ]] && sleep ${period}
|
||||
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
|
||||
echo "(${i}/${counts}) Waiting ${service} to stop."
|
||||
fi
|
||||
@@ -115,7 +117,7 @@ stop() {
|
||||
fi
|
||||
local pid=$(cat ${service_pidfile})
|
||||
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}." \
|
||||
"Removed stale file '${service_pidfile}'."
|
||||
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