目录
项目分布式架构
Namenode | Hadoop002 |
SecondaryNamenode | Hadoop003 |
ResourceManager | Hadoop002 |
DataNode | 位于各个节点(1-8) |
NodeManager | 位于各个节点(1-8) |
前期准备工作
1.选购阿里云服务器
首先就是选购阿里云服务器,我选择的是Ubuntu 18.04系统
在选购时在阿里云的每台机器指定用户名、主机名、密码,一般用户名相同,密码相同。
主机名hostname为xxx1-xxx8比较好记。
找个空白的txt记录下所有节点的内网IP地址和外网ip地址
我选择的是Hadoop 2.6.0 和JDK1.8 事先把linux安装包下好
正式配置工作
(以下介绍的为每个节点都必备的工作)
2.启动远程连接
3.关闭防火墙
sudo ufw disable //关闭防火墙
4.创建操作用户、修改权限
useradd -m hadoop //创建Hadoop用户用于操作
passwd hadoop //为创建的Hadoop用户指定密码
修改Hadoop的权限:将Hadoop加进sudoers列表
%hadoop ALL=(ALL:ALL) ALL
sudo vi /etc/passwd 修改Hadoop的显示情况(原来仅显示$ 没有bash)最后将/sh变为/bash
su hadoop切换到hadoop
5.修改主机IP配置
sudo vi /etc/hosts 建立主机名和ip地址的对应(在之后缀加) (填写阿里云私有ip地址)
这样就使用主机名可以ping其他机器了
6.配置SSH
su hadoop//切换回Hadoop 用户
mkdir .ssh// hadoop目录下新建.ssh 文件夹
ssh-keygen -t rsa //创建公钥 连按三次确认即可
cd .ssh 进入.ssh文件夹
cat id_rsa.pub>>authorized_keys //将id_rsa.pub并入 authorized_keys之后
查看 authorized_keys 已经出现了hadoop006的公钥
接下来 ssh localhost已经成功,输入一次yes即可
给.ssh 设置权限
配置去其他节点的免密登录 ssh将自己的密钥发送给其他节点
ssh-copy-id 主机名
7.上传文件到服务器
上传jdk、hadoop文件到阿里云,注意使用端口号22和 公网ip,最后跟服务器的路径 ,该路径必须存在!
使用以下scp命令发送
scp -P 22 本路径文件名 用户名@IP地址:/路径
中途需要你输入Hadoop 的登录密码
发送成功!
8.安装hadoop、Java
现在需要解压两个文件
tar -zxvf hadoop-2.6.0-x64.tar.gz
tar -zxvf jdk-8u11-linux-x64.tar.gz
解压完成 出现两个文件夹
创建软链接 hadoop和jdk指向这两个文件夹
ln -s hadoop-2.6.0 hadoop
ln -s jdk1.8.0_11 jdk
记住Java的路径 去配置环境变量bashrc
最后添加以下内容 第一行的jdk1.8.0_1最好改为jdk
保存并退出后 source ~/.bashrc
Java和hadoop就环境安装好了
以下工作可以在一台节点做好,打包发送
9.配置Hadoop
hadoop-2.6.0 下面的etc/hadoop/ 修改hadoop-env.sh
在export JAVA_HOME 之后将自己的Java地址写上即可
再修改core-site.xml,<configuration></configuration>内加上以下内容 根据自己的主机和路径改
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop002:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/app/hadoop-2.6.0/tmp</value>
</property>
再修改hdfs-site.xml,<configuration></configuration>内加上以下内容 根据自己的主机和路径改
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop003:50090</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop002:50070</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/app/hadoop-2.6.0/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/app/hadoop-2.6.0/tmp/dfs/data</value>
</property>
再复制一份mapred.site.xml.template 命名为mapred.site.xml 并配置它
cp mapred.site.xml.template mapred.site.xml
vi mapred.site.xml
配置mapred.site.xml ,<configuration></configuration>内加上以下内容 根据自己的主机和路径改
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop008:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop008:19888</value>
</property>
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx8000m</value>
</property>
配置slaves ,将需要的slave机的hostname全添加后去,master机也可以作为slave
hadoop001
hadoop002
hadoop003
hadoop004
hadoop005
hadoop006
hadoop007
hadoop008
配置yarn-site.xml,<configuration></configuration>内加上以下内容 根据自己的主机和路径改
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop002</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.application.classpath</name>
<value>hadoop classpath=/home/hadoop/app/hadoop-2.6.0/etc/hadoop:/home/hadoop/app/hadoop-2.6.0/share/hadoop/common/lib/*:/home/hadoop/app/hadoop-2.6.0/share/hadoop/common/*:/home/hadoop/app/hadoop-2.6.0/share/hadoop/hdfs:/home/hadoop/app/hadoop-2.6.0/share/hadoop/hdfs/lib/*:/home/hadoop/app/hadoop-2.6.0/share/hadoop/hdfs/*:/home/hadoop/app/hadoop-2.6.0/share/hadoop/mapreduce/lib/*:/home/hadoop/app/hadoop-2.6.0/share/hadoop/mapreduce/*:/home/hadoop/app/hadoop-2.6.0/share/hadoop/yarn:/home/hadoop/app/hadoop-2.6.0/share/hadoop/yarn/lib/*:/home/hadoop/app/hadoop-2.6.0/share/hadoop/yarn/*
</value>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>16</value>
<source>yarn-default.xml</source>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>8192</value>
<source>yarn-default.xml</source>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>4096</value>
<source>yarn-default.xml</source>
</property>
现在启动sbin/start-all.sh,正常运行
注意事项
注意jps后至少出现3+2+1=6个process才可以 正常运行任务
namenode、datanode、seconarynamenode //hdfs mapreduce的三个进程
nodemanager、resourcemanager // yarn的两个任务管理进程
jps //Java Virtual Machine Process Status Tool 可以列出本机所有java进程的pid
到这里,完全分布式集群就配置完成了
要验证的话可以在你自己的设备浏览器中输入http://47.108.74.71:8088/ 查看任务、结点情况。
这个是在node为3时运行任务时进行的截图
或者在你自己的设备浏览器中http://47.108.74.71:50070/ 查看namenode的情况(包含全部节点、hdfs所占空间情况)
我这个是在node为2时进行的截图