使用vultr【Ubuntu服务器】安装hadoop 2.7.7 完全分布式搭建
此文章根据自身情况和现实情况修改自https://chnxyu.github.io/2018/07/10/deploy-Hadoop-on-cluster/
我在查阅不同做法、排除错误时修改和添加了一些步骤。不同人可根据自己的错误信息自行查阅修改。不要只按步骤来。边理解边搭建。
云中部署服务器
1. 搭建三台相同位置的云服务器
一个主节点,2个从节点。
三台电脑主机的用户名均为root.
2.建立内网【private network】
以下为大致步骤
首先建立内网。因为vultr并不自动建立内网,要手动建立。
随后连接服务器【xshell 连接 自行百度】
按如下操作:
vim /etc/netplan/10-ens7.yaml
修改mac 和 ip 地址。数值为上面内网地址 attach到各个服务器的值 我这里为:10.2.96.3 和5a:00:02:5c:83:da
netplan apply
ifconfig
最后互相测试能不能ping 通。【最好内网ip和外网ip都测试】
Hadoop 2.7.6分布式集群环境搭建
1. change name
为了更好的在Shell中区分三台主机,修改其显示的主机名,执行如下命令
sudo vim /etc/hostname #修改为分别修改为 master slave1 slave2
2. setting IP address
修改三台机器的/etc/hosts文件,添加同样的配置:
sudo vim /etc/hosts
127.0.0.1 localhost
10.25.96.5 slave2
10.25.96.4 slave1
10.25.96.3 master
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
3. 配置ssh无密码登录本机和访问集群机器
3.1在master 上运行:
ssh-keygen #一路回车
此张图片来自https://blog.csdn.net/CowBoySoBusy/article/details/86558017
3.2将生成的公钥scp传送给两台虚拟机的authorized_keys授权列表文件中,但这里用ssh-copy-id命令更加方便,公钥可以直接进入authorized_keys授权列表文件中,而不需要再加目的地址了。
ssh-copy-id slave1
ssh-copy-id slave2
4. JDK
4.1 分别在master主机和slave1、slave2主机上安装JDK和Hadoop,并加入环境变量。
sudo apt-get install default-jdk
4.2 JDK文件路径
编辑~/.bashrc文件,添加如下内容:
export JAVA_HOME=/usr/lib/jvm/default-java
接着让环境变量生效,执行如下代码:
source ~/.bashrc
5. Hadoop下载与路径配置
5.1 下载解压到指定文件夹
先在master主机上做安装Hadoop,暂时不需要在slave1,slave2主机上安装Hadoop.稍后会把master配置好的Hadoop发送给slave1,slave2.
在master主机执行如下操作:
首先要下载hadoop到本地
wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz
cd /usr/local/
rm -rf hadoop/
rm -rf spark/
sudo tar -zxf ~/hadoop-2.7.7.tar.gz -C /usr/local
sudo mv ./hadoop-2.7.7/ ./hadoop
sudo chown -R root ./hadoop
5.2 Hadoop的文件路径配置
编辑vim ~/.bashrc文件,添加如下内容:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
接着让环境变量生效,执行如下代码:
source ~/.bashrc
6 Hadoop参数配置
6.1 填写slave节点
修改master主机修改Hadoop如下配置文件,这些配置文件都位于cd /usr/local/hadoop/etc/hadoop目录下。
修改vim slaves:
这里把DataNode的主机名写入该文件,每行一个。这里让master节点主机仅作为NameNode使用。
记得 清空原本的列表!!再添加
slave1
slave2
6.2 再次添加JAVA_HOME
要在hadoop-env.sh 中再次export JAVA_HOME 否则在启动的时候会失败
具体请参照:https://www.cnblogs.com/codeOfLife/p/5940642.html
6.3 填写core-site.xml
首先在home目录下建立一个hadoop_tmp目录
sudo mkdir ~/hadoop_tmp
再修改vim core-site.xml
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hadoop_tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
6.4 填写hdfs-site.xml
修改vim hdfs-site.xml:
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
</configuration>
6.5 填写mapred-site.xml
修改vim mapred-site.xml(修改前先 cp mapred-site.xml.template mapred-site.xml)
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
6.6 填写yarn-site.xml
修改vim yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
</configuration>
7 压缩并发送与接收
7.1 压缩并发送到各个节点
配置好后,将 master 上的 /usr/local/Hadoop 文件夹复制到各个节点上。之前有跑过伪分布式模式,建议在切换到集群模式前先删除之前的临时文件。在 master 节点主机上执行:
cd /usr/local/
rm -rf ./hadoop/tmp # 删除临时文件
rm -rf ./hadoop/logs/* # 删除日志文件
tar -zcf ~/hadoop.master.tar.gz ./hadoop
cd ~
scp ./hadoop.master.tar.gz master:/root
scp ./hadoop.master.tar.gz slave1:/root
scp ./hadoop.master.tar.gz slave2:/root
7.2 在各个节点上解压
在slave1,slave2节点上执行:
sudo rm -rf /usr/local/hadoop/
sudo tar -zxf ~/hadoop.master.tar.gz -C /usr/local
sudo chown -R root /usr/local/hadoop
8 启动hadoop集群
8.1 在master主机上执行如下命令:
cd /usr/local/hadoop
bin/hdfs namenode -format
sbin/start-all.sh
直接
hadoop namenode -format
start-all.sh
也是可以的
8.8 检查是否成功
运行后,在master,slave1,slave2运行jps命令,查看:
jps
Master对开启如下进程
2512 ResourceManager
2759 Jps
2087 NameNode
2350 SecondaryNameNode
slave会开启如下进程
1865 NodeManager
1998 Jps
1679 DataNode
8.9 关闭
关闭hadoop集群
/usr/local/hadoop/sbin/stop-all.sh
或者
stop-all.sh