手把手教你搭建hadoop集群(CentOS6.X)
一、新建虚拟机
略(只要建立一个普通的虚拟机即可,虚拟机作为主机:hadoopmaster)
启动此虚拟机如上图所示。
二、VMware VMnet8 模式共享主机网络配置
NAT 网络模式:
宿主机可以看做一个路由器,虚拟机通过宿主机的网络来访问 Internet;
可以安装多台虚拟机,组成一个小型局域网,例如:搭建 hadoop 集群、分布式服务。
步骤一 VMnet8 设置静态 IP
具体的IP地址需要根据个人情况做相对应改变,我的IP地址是192.168.93.2;默认网关是192.168.93.1
步骤二 Centos 网络设配器为 NAT 模式
应该默认都是NAT模式,如果不是的话,切换成NAT模式;
步骤三 VMware 虚拟网络设置
在VMware中找到虚拟网络编辑器,按上述操作进行配置。
步骤五 修改网络设置
步骤六 验证结果:
ping www.baidu.com 看网络是否通了
如果出现了上面的情况,则说明网络已经通了,配置成功。
3、 克隆集群节点 hadoopSlave1 与 hadoopSlave2
步骤一 关闭 hadoopmaster 服务器,在该节点单击鼠标右键,选择【管理】-【克隆】选项
步骤二 克隆虚拟机向导:
将虚拟机重命名为 HadoopSlave1,并选择一个存储位置
同理 再克隆一台虚拟机命名为hadoopslave2;完成 Hadoop 分布式集群的虚拟硬件环境搭建
4、 Linux 系统配置 (最好用root用户配置)
步骤一 配置时钟同步
安装 crontab:在命令行里输入 yum install vixie-cron 和 yum install crontabs
配置自动时钟同步 :0 1 * * * /usr/sbin/ntpdate cn.pool.ntp.org 或者 0 1 * * * /usr/sbin/ntpdate aliyun.com
手动时间同步: /usr/sbin/ntpdate cn.pool.ntp.org 或者 /usr/sbin/ntpdate cn.pool.ntp.org
步骤二 配置主机名
以 root 用户身份登录 HadoopMaster 节点,直接使用 vim 编辑器打开 network 网络配置文件,命令如下:
vim /etc/sysconfig/network
打开 network 文件,配置信息如下,将 HadoopMaster 节点的主机名修改为 master,即下 面第二行代码所示:
NETWORKING=yes #启动网络
HOSTNAME=master #主机名
按 Esc 键,输入:wq 保存退出。 确认修改生效,命令如下:
hostname master
在操作之前要关闭当前的终端,重新打开一个终端: 输入查看是否修改成功:hostname
步骤三 配置 HadoopSlave1 和 HadoopSlave2 网络环境,并关闭三台主机的防火墙
将虚拟机的网络地址修改为固定的IP地址,不然每次开机时可能导致IP地址不同,导致集群启动失败。
可以用图形化操作(点桌面右上角的小电脑图标配置),如果不行的话用命令行操作:
vi /etc/sysconfig/network-scripts/ifcfg-eth0(etho网卡的配置文件)
修改ONBOOT=yes;BOOTPROTO=static;添加IPADDR,GATEWAY,DNS1(保持与网关一致即可)
(具体要根据自己的电脑的网络来配置,不能照抄!!!!)
修改后,使用service network restart重启网络或者reboot重启虚拟机即可。
需要注意的是:如果用命令行修改时,不仅要把虚拟机的IP地址修改,还要把两台克隆的虚拟机上UUID 和 HWADDR 删掉!!
下次虚拟机开机时会自动分配对应的UUID和HWADDR!
防火墙关闭:
设置关闭即可
步骤四 配置 Hosts 列表
以 root 用户身份登录三个节点,将下面 3 行代码添加到主机列表/etc/hosts 文件中。
vi /etc/hosts
192.168.93.128 master
192.168.93.129 slave1
192.168.93.130 slave2
验证主机 hosts 是否配置成功
ping master
ping slave1
ping slave2
步骤五 安装 JDK
将 jdk-7u79-linux-x64.tar.gz 复制到新建的/usr/java 目录下解压
cd /usr
mkdir java
cd java
tar -zxvf jdk-7u79-linux-x64.tar.gz
修改用户的系统环境变量文件/home/hadoop/.bash_profile
vi /home/hadoop/.bash_profile
将下面代码赋值到profile文件中即可;
export JAVA_HOME=/usr/java/jdk1.7.0_79
export JRE_HOME=/usr/java/jdk1.7.0_79/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=$JRE_HOME/bin:$JAVA_HOME/bin:$PATH
输入 source/home/hadoop/.bash_profile 使命令生效
输入java -version
说明安装成功!
步骤六 免**登录配置
从 root 用户切换到 hadoop 用户,输入 su hadoop,在终端生成**,输入以下命令:
ssh-****** –t rsa
ssh-****** 是生成**的命令;-t rsa 表示使用 rsa 算法进行加密
生成的**在/home/hadoop/.ssh/目录下,私钥为 id_rsa,公钥为 id_rsa.pub
复制公钥文件到 authorized_keys 文件中,命令如下:
cat /home/hadoop/.ssh/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys
修改 authorized_keys 文件的权限,只有当前用户 hadoop 有权限操作 authorized_keys 文件, 命令如下:
chmod 600 /home/hadoop/.ssh/authorized_keys
将 HadoopMaster 主节点生成的 authorized_keys 公钥文件复制到 HadoopSlave1 和 HadoopSlave2 从节点,命令如下:
scp /home/hadoop/.ssh/authorized_keys [email protected]:/home/hadoop/.ssh/
scp /home/hadoop/.ssh/authorized_keys [email protected]:/home/hadoop/.ssh/
如果出现提示,则输入 yes 并按回车键,输入密码,这里密码是 hadoop。
此时,HadoopMaster 节点的公钥文件信息就被复制到 HadoopSlave1 和 HadoopSlave2 节点上了。
以 hadoop 用户身份登录 HadoopSlave1、HadoopSlave2 节点,进入到/home/hadoop/.ssh 目录,修改 authorized_keys 文件的权限为当前用户可读可写,输入以下命令:
chmod 600 /home/hadoop/.ssh/authorized_keys
此时,在 HadoopSlave1、HadoopSlave2 节点上就存放了 HadoopMaster 节点的公钥,那 么 HadoopMaster 节点就可以以 SSH 方式直接登录 HadoopSlave1、HadoopSlave2 节点。验证 免**登录,在 HadoopMaster 节点的 Terminal 终端上输入以下命令验证免**登录。
[[email protected] ~]$ ssh slave1
Last login: Sat Feb 1 01:23:58 2020 from slave1
[[email protected] ~]$ exit
logout
Connection to slave1 closed.
[[email protected] ~]$ ssh slave2
Last login: Fri Jan 31 09:23:24 2020 from slave1
[[email protected] ~]$ exit
logout
Connection to slave2 closed.
[[email protected] ~]$
5、 Hadoop 的部署配置(以下都使用hadoop用户进行配置)
步骤一 解压 Hadoop 安装文件
将 Hadoop 安装文件通过 SSH 工具上传到 HadoopMaster 节点 hadoop 用户的主目录下。
进入 hadoop 用户主目录
cd ~
输入以下命令进行解压:
tar –zxvf hadoop-2.5.2.tar.gz
步骤二 配置环境变量 hadoop-env.sh
打开 Hadoop 的环境变量文件,只需要配置 JDK 的路径。
vim /home/hadoop/hadoop-2.5.2/etc/hadoop/hadoop-env.sh
在文件靠前的部分找到以下代码:
export JAVA_HOME=${JAVA_HOME}
将这行代码修改为:
export JAVA_HOME=/usr/java/jdk1.7.0_79
步骤三 配置环境变量 yarn-env.sh
打开 Hadoop 的 YARN 模块的环境变量文件 yarn-env.sh,只需要配置 JDK 的路径。
vim /home/hadoop/hadoop-2.5.2/etc/hadoop/yarn-env.sh
在文件靠前的部分找到以下代码:
#export JAVA_HOME
将这行代码修改为:
export JAVA_HOME=/usr/java/jdk1.7.0_79
按esc后,:wq!退出
步骤四 配置核心组件 core-site.xml
打开 Hadoop 的核心配置文件 core-site.xml
vim /home/hadoop/hadoop-2.5.2/etc/hadoop/core-site.xml
在<!-- Put site-specific property overrides in this file. -->下方,输入
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoopdata</value>
</property>
</configuration>
按esc后,:wq!退出
步骤五 配置文件系统 hdfs-site.xml
打开 hdfs-site.xml 配置文件
vim /home/hadoop/hadoop-2.5.2/etc/hadoop/hdfs-site.xml
在<!-- Put site-specific property overrides in this file. --> 下方,输入
<configuration>
<property>
<!--配置数据块的副因子(即副本数)为 2-->
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
按esc后,:wq!退出
步骤六 配置 YARN 资源系统 yarn-site.xml
打开 yarn-site.xml 配置文件
vim /home/hadoop/hadoop-2.5.2/etc/hadoop/yarn-site.xml
在<!-- Site specific YARN configuration properties -->下方,输入
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:18040</value>15
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:18030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:18141</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:18088</value>
</property>
步骤七 配置计算框架 mapred-site.xml
通过以下命令打开 mapred-site.xml 配置文件
vim /home/hadoop/hadoop-2.5.2/etc/hadoop/mapred-site.xml
在<!-- Put site-specific property overrides in this file. -->下方,输入
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
步骤八 在 HadoopMaster 配置 slaves,复制 hadoop 到从节点
打开 slaves 配置文件
vim /home/hadoop/hadoop-2.5.2/etc/hadoop/slaves
用下面的内容替换 slaves 文件中的内容:
slave1
slave2
在 Hadoop 集群中,每个节点上的配置和安装的应用都是一样的,这是分布式集群的特性, 所以,此时已经在 HadoopMaster 节点上安装了 Hadoop-2.5.2 的应用,只需要将此应用复制到各个从节点(即 HadoopSlave1 节点和 HadoopSlave2 节点)即可将主节点的 hadoop 复制到从节点上。
scp –r /home/hadoop/hadoop-2.5.2 [email protected]:~/
scp –r /home/hadoop/hadoop-2.5.2 [email protected]:~/
步骤九 配置 Hadoop 启动的系统环境变量
此配置需要同时在 HadoopMaster、HadoopSlave1 和 HadoopSlave2 上进行操作,操作命令如下:
vim /home/hadoop/.bash_profile
将下面的代码追加到.bash_profile 文件的末尾:
#Hadoop Path configuration
export HADOOP_HOME=/home/hadoop/hadoop-2.5.2
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
输入:wq 保存退出,并执行生效命令:
source /home/hadoop/.bash_profile
登录 HadoopSlave1 和 HadoopSlave2 节点,依照上述配置方法,配置 Hadoop 启动环境变量
步骤十 配置数据目录
HDFS 分布式文件系统存储数据最终落地到各个数据节点上的本地磁盘位置信息 /home/hadoop/hadoopdata,该目录是需要自己创建的。
要在 HadoopMaster、HadoopSlave1 和 HadoopSlave2 上分别创建数据目录/home/hadoop/hadoopdata。
mkdir /home/hadoop/hadoopdata
6、 Hadoop 集群的启动
步骤一 格式化文件系统(只在第一次运行时输入即可)
启动集群时,首先要做的就是在 HadoopMaster 节点上格式化分布式文件系统 HDFS:
hdfs namenode –format
步骤二 启动 Hadoop
Hadoop 是主从架构,启动时由主节点带动从节点,所以启动集群的操作需要在主节点 HadoopMaster 完成,命令如下:
cd /home/hadoop/hadoop-2.5.2
sbin/start-all.sh
执行命令后,在提示处输入 yes
步骤三 查看进程是否启动
在 HadoopMaster 的终端执行 jps 命令,在打印结果中会看到 4 个进程,分别是
ResourceManager、Jps、NameNode 和 SecondaryNameNode。
在HadoopSlave的终端执行jps命令,在打印结果中会看到3个进程,分别是
NodeManager、 DataNode 和 Jps。
则表示主、从节点进程启动成功。
步骤四 Web UI 查看集群是否成功启动
在 HadoopMaster 上启动 Firefox 浏览器,在浏览器地址栏中输入 http://master:50070/,检查 NameNode 和 DataNode 是否正常;在浏览器地址栏中输入 http://master:18088/,检查 YARN是否正常。
步骤五 运行 PI 实例检查集群是否启动成功
在 HadoopMaster 节点上,进入 hadoop 安装主目录,分别执行下面的命令:
cd hadoop-2.5.2/share/hadoop/mapreduce
hadoop jar hadoop-mapreduce-examples-2.5.2.jar pi 10 10
最后输出为:
Estimated value of Pi is 3.20000000000000000000
最后结束hadoop命令:stop-all.sh
在关闭hadoop后再关闭虚拟机!