需要的安装包:
- Jdk压缩包
- hadoop压缩包
注意:下载安装包的时候最好不要下载最新版本,建议下载上一个版本。
jdk 安装很简单,把压缩文件解压,解压后的目录加入环境变量就可以了,这里就不详细说了,重点放在hadoop集群环境搭建。
下面开始部署集群
一、使用vmware创建两台虚拟机,我使用的是centos7,设置hostname,关闭防火墙。
- 虚拟机创建好之后修改主机名,一台改为master,一台slaver,
sudo vi /etc/hostname - 为了能让master跟slaver直接能够ping通,需要修改它们的ip地址,分别在两台虚拟机上进行同样的操作,ifconfig 查找ip,copy下来
然后输入下面命令修改ip
sudo vi /etc/hosts
图中master前面的ip就是master节点的真实ip,slaver对应slaver节点的真实ip,两台虚拟机都要设置。
3. 关闭防火墙
centeros7之前版本跟之后版本使用的防火墙不一样,所以关闭方法也有所区别,可以参考centos7防火墙关闭
二、配置ssh免密登录
先检查一下自己的虚拟机是否已经安装好了ssh,centos7默认已经装好了。
sudo ps -e |grep ssh
如图所示就是已经装好了,没装好的参考ssh安装
接下来的操作很重要,很多人在这里卡很久。
-
ssh-keygen -t rsa -P “” //(P是要大写的,后面跟"")
-
进入 ~/.ssh,将id_rsa.pub追加到authorized_keys授权文件中,开始是没有authorized_keys文件的。
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
这个命令执行后终端执行 ssh master,如果不能连接成功说明追加写入失败,需要执行 ssh-copy-id -i ~/.ssh/id_rsa.pub master这个命令。
接下来要把master的公钥追加到slaver的authorized_keys里面,在master执行下面代码。
ssh-copy-id -i ~/.ssh/id_rsa.pub slaver
- 验证免密登录
ssh master
ssh slaver
能连接上说明已经设置好了免密登录。如果要输入密码,一定是公钥没有配好,可以重新操作一遍,也可以找ssh免密登录设置详细教程,千万别信网上那些乱七八糟的要修改其它文件的教程。
三、集群搭建(如无特别说明,接下来的操作都在master进行)
1. 下载 Hadoop并解压,建议不要下载最新版,下载地址为:http://archive.cloudera.com/cdh5/cdh/5/
tar -zxvf hadoop-2.7.7.tar.gz
2. 添加环境变量
sudo vi /etc/profile
添加
export HADOOP_HOME=/home/admin/files/hadoop-2.7.7
export PATH=${HADOOP_HOME}/bin:$PATH
HADOOP_HOME 的路径记得改为自己的hadoop路径。
执行 source 命令,使得配置立即生效:
source /etc/profile
3. 修改配置,这一步很多教程有坑。
- 先在/home/admin/files/hadoop-2.7.7路径5个文件夹:
- /home/admin/files/hadoop-2.7.7/hdfs
- /home/admin/files/hadoop-2.7.7/name
- /home/admin/files/hadoop-2.7.7/datanode
- /home/admin/files/hadoop-2.7.7/namenode
- /home/admin/files/hadoop-2.7.7/hdfs/tmp
进入 ${HADOOP_HOME}/etc/hadoop 目录下,修改配置文件。各个配置文件内容如下:
-
hadoop-env.sh
指定JDK的安装位置,切记把路径替换成你自己的。
export JAVA_HOME=/usr/java/jdk1.8.0_201/ -
core-site.xml
<configuration>
<property>
<!--指定 namenode 的 hdfs 协议文件系统的通信地址-->
<name>fs.defaultFS</name>
<value>hdfs://master:8020</value>
</property>
<property>
<!--指定 hadoop 集群存储临时文件的目录-->
<name>hadoop.tmp.dir</name>
<value>/home/admin/files/hadoop-2.7.7/hdfs/tmp</value>
</property>
</configuration>
- hdfs-site.xml
<property>
<!--namenode 节点数据(即元数据)的存放位置,可以指定多个目录实现容错,多个目录用逗号分隔-->
<name>dfs.namenode.name.dir</name>
<value>/home/admin/files/hadoop-2.7.7/namenode</value>
</property>
<property>
<!--datanode 节点数据(即数据块)的存放位置-->
<name>dfs.datanode.data.dir</name>
<value>/home/admin/files/hadoop-2.7.7/datanode</value>
</property>
- yarn-site.xml
<configuration>
<property>
<!--配置 NodeManager 上运行的附属服务。需要配置成 mapreduce_shuffle 后才可以在 Yarn 上运行 MapReduce 程序。-->
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<!--resourcemanager 的主机名-->
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
</configuration>
- mapred-site.xml
<configuration>
<property>
<!--指定 mapreduce 作业运行在 yarn 上-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
2、3、4步骤的value千万要注意了,都是对应你们自己主机的真实值,这里粗心能坑你两三天。
四、分发程序
将 Hadoop 安装包分发到其他两台服务器,分发后建议在这两台服务器上也配置一下 Hadoop 的环境变量。
将安装包分发到slaver
scp -r /home/admin/files/hadoop-2.7.7/ slaver:/home/admin/files
五、设置集群群发
设置${HADOOP_HOME}/etc/hadoop目录下的slaves文件,把所有从节点名称添加进去,并在所有的节点上都要进行这步操作。
cd ${HADOOP_HOME}/etc/hadoop
sudo vim slaves
六、初始化
在 Hadoop001 上执行 namenode 初始化命令:
hdfs namenode -format
前面步骤如果没报错,这步报错的话,一定是步骤四的路径设置有问题。
七、启动集群
进入到 master 的 ${HADOOP_HOME}/sbin 目录下,启动 Hadoop。此时 slaver 上的相关服务也会被启动:
启动dfs服务
start-dfs.sh
启动yarn服务
start-yarn.sh
八、查看集群
在每台服务器上输入jps命令查看服务进程,检查master 主机是否开启了以下进程,缺少以下任意一项,环境都有问题。
ResourceManager
SecondaryNameNode
NodeManager
NameNode
DataNode
检查slaver是否开启了DataNode进程。