我正在尝试在三个虚拟机上本地设置Hadoop群集。我已成功设置我的虚拟机。我还在主节点上安装了Hadoop。但是,每次运行vagrant provision时,它都会重新下载Hadoop,这很耗时。我想检查是否已安装Hadoop,如果已安装,则跳过下载Hadoop的代码。
下面是我的代码。/home/vagrant/hadoop是hadoop的位置。
# Download and extract Hadoop on master node (i.e node1)
if node.vm.hostname == "node1"
# Check if Hadoop is already installed so it wont install every time you run vagrant provision
if [ ! -d "/home/vagrant/hadoop" ]; then
node.vm.provision "shell", inline: <<-SHELL
wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
tar -xvzf hadoop-3.3.4.tar.gz
mv hadoop-3.3.4 hadoop
SHELL
fi
fi
这是我得到的错误。unexpected end-of-input, expecting
结束
我将fi
更改为end
,并得到以下错误。
“syntax error, unexpected
结束”,应为输入结束``
1条答案
按热度按时间xdnvmnnf1#
我认为你模糊了Ruby(流浪者)和shell(主机)之间的界限:
尽管Ruby的语法可能(至少表面上)类似于shell,但它是完全不同的。
请记住,运行在主机上的Ruby无法测试VM中可能存在或不存在的目录。这是您必须使用shell来完成的事情,因此它位于shell命令中。