虽然有一些自动化安装的工具,但是功能越多,越专业的工具,可能也需要越高的学习成本,而我们并非专业运维,但是又必须做这些事情的话,不妨选择用 Shell 脚本来完成集群的安装。
当然了,现在也有很多使用 docker 的做法,安装与部署也非常方便。
整个过程其实很简单,就是对安装过程中的一些手动操作使用 Shell 脚本进行替代。对脚本比较熟悉的话,应该很容易看懂。推荐一个网站,explainshell, 输入 Shell 命令,它会对命令的各部分进行详细的解释。
以下内容虽在 Ubuntu 16.04 试用过,但有些细节可能由于时间因素,难免会有偏差。如有问题,欢迎指正。
其他系统要安装的话可适当参照,步骤上大致相同,只是有些细节需要针对性调整。在所有安装步骤中,最重要的一步是配置 SSH 无密码登录。如果不明白脚本的内容,不要使用我的安装脚本,明白可以抽取部分自用。
对安装过程不太熟的话,建议先跟着厦门大学的教程做:Spark2.1.0入门:Spark的安装和使用,里面涉及了 Hadoop 与 Spark 等各种软件的安装,十分详细,对新手很友好。只有对手动安装的整个过程了然于心,自动化安装才能得心应手。
为了避免因为用户权限要求输入密码的麻烦,以下所有操作均在 root 用户 ,全新系统环境下执行。
以下所涉及的所有脚本我都已经放到了 GitHub 上,点击 这里 查看,距离脚本写完已经有一段时间,懒得对代码结构进行优化了:)。如果对某个脚本有疑问,可以自行单独拿出来,在本地进行测试与验证。
另外,集群的安装基本上都差不多,这里是陈天奇在 EC2 上安装 yarn 集群的脚本:https://github.com/tqchen/yarn-ec2 ,有兴趣可以看一下。
用到主要工具有 rsync 和 expect, rsync 用于同步文件,expect 用于处理需要手动输入的情况。
1. 安装必要的软件
比如 Java,openssh-server,expect(用于自动处理一些交互, 只在
Master 节点上安装即可),vim 等。在 Master 和 Slave 都要安装这些软件,可以将在配置好 ssh 无密码登录后,将安装脚本同步到各 Slave 进行安装。
基本的软件安装
pre-install.sh:
#!/usr/bin/env bash
# 安装 Vim8,方便修改配置文件
apt install software-properties-common
add-apt-repository ppa:jonathonf/vim
apt update
apt install vim
# 安装 git, expect, openssh-server
apt install git expect openssh-server
# Install Java8
apt install openjdk-8-jre openjdk-8-jdk
# Set JAVA_HOME
JAVA_PATH=$(update-alternatives --list java)
JAVA_HOME=${JAVA_PATH%/jre/bin*}
echo "export JAVA_HOME=$JAVA_HOME" >> "$HOME/.bashrc"
安装 Hadoop
安装 Hadoop, 大致为 wget 下载 Hadoop,然后解压到 /usr/local/hadoop。install-hadoop.sh:
#!/usr/bin/env bash
HADOOP_DOWNLOAD_URL=https://mirrors.cnnic.cn/apache/hadoop/common/stable/hadoop-2.7.3.tar.gz
HADOOP_TAR_GZ=${HADOOP_DOWNLOAD_URL##*/} # hadoop-2.7.3.tar.gz
HADOOP_VER=${HADOOP_TAR_GZ%%.tar.gz} # hadoop-2.7.3
if [ ! -d /usr/local/hadoop ]; then
[ ! -f /tmp/$HADOOP_TAR_GZ ] && wget -P /tmp --no-check-certificate $HADOOP_DOWNLOAD_URL
tar -zxf /tmp/$HADOOP_TAR_GZ -C /usr/local
mv /usr/local/$HADOOP_VER