用VMware 搭建hadoop 集群
准备工作
使用VMware 创建3个Centos 虚拟机
graph TB;
Master-->Slave1;
Master-->Slave2;
Master-->Slave3;
将每台机器设置为静态ip
[slave3@slave3 ~]$ su
Password:
[root@slave3 slave3]# cd /etc/sysconfig/network-scripts/ network-functions-ipv6
[root@slave3 network-scripts]# vim ifcfg-eth0
设置静态Ip的方法网上很多 这里就不介绍了
准备jdk 和 hadoop
准备好虚拟机之后 就要安装java和hadoop了
因为初学 所以准备从hadoop1.x开始
hadoop-1.2.1-bin.tar.gz jdk-8u181-linux-x64.tar.gz
[root@slave3 src]# ll
-rw-r--r--. 1 root root 38096663 Oct 15 07:52 hadoop-1.2.1-bin.tar.gz
-rw-r--r--. 1 root root 185646832 Oct 15 07:52 jdk-8u181-linux-x64.tar.gz
给予文件执行权限
chmod 744 jdk-8u181-linux-x64.tar.gz
ok 准备工作完成 接下来我们就要开始安装了
安装java
==注意 如果不是纯净版的Centos镜像 可能会带有java版本 可以使用自带版本 也可以卸载之后 重新安装==
tar -xzvf jdk-8u181-linux-x64.tar.gz
[root@slave3 src]# mv jdk1.8.0_181/ jdk1.8
[root@slave3 src]# cd jdk1.8/
[root@slave3 jdk1.8]# pwd
/usr/local/src/jdk1.8
[root@slave3 jdk1.8]# vim ~/.bashrc
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
export JAVA_HOME=/usr/local/src/jdk1.8
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
[root@slave3 jdk1.8]# source ~/.bashrc
[root@slave3 jdk1.8]# java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
其他slave 安装同理(可以用scp 直接复制java文件)
安装hadoop
解压hadoop 并进入hadoop 目录
创建tmp 文件 用来存放hadoop的临时文件
[lmz@master hadoop-1.2.1]$ mkdir tmp
进入配置文件 进行配置
修改masters和slaves文件
[lmz@master hadoop-1.2.1]$ cd conf/
[lmz@master conf]$ vim masters
master
[lmz@master conf]$ vim slaves
slave1
slave2
修改core-site.xml 文件
hadoop.tmp.dir
/usr/local/src/hadoop-1.2.1/tmp
fs.default.name
hdfs://172.16.19.128:9000
修改 hdfs-site.xml 文件
dfs.replication
3
修改 mapred-site.xml
mapred.job.tracker
http://172.16.19.128:9001
配置hadoop-env.sh
在最后一行加上
export JAVA_HOME=/usr/local/src/jdk1.8
设置hosts文件 避免使用ip访问其他节点
[lmz@master conf]$ cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
:i:1 localhost localhost.localdomain localhost6 localhost6.localdomain6i
172.16.19.128 master
172.16.19.129 slave1
172.16.19.130 slave2
[lmz@master conf]$ cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=master
完成之后 我们就将hadoop文件 复制给其他slave 机器
为了防止网络传输造成的问题 建议关闭iptables 防火墙
[slave3@slave3 ~]$ /etc/init.d/iptables stop
[slave3@slave3 ~]$ setenforce 0
建立机器之间的关系
为了方便在机器间进行比如ssh等操作
生成.ssh
一路回车到底 安装之后 进入.ssh目录
[root@master bin]# ssh-keygen
[root@master bin]# cd ~/.ssh/
[root@master .ssh]$
slave1 slave2 slave3同理
回到master创建authorized_keys文件
将master slave1 slave2 slave3的id_rsa.pub 公钥文件复制到master的authorized_keys中
最后复制authorized_keys到slave1 slave2 slave3
完成之后 我们测试一下 是否好用
[root@master .ssh]# ssh slave1
Last login: Mon Oct 15 02:08:11 2018 from master
[root@slave1 ~]# ssh slave2
Last login: Mon Oct 15 02:08:19 2018 from slave1
[root@slave2 ~]# ssh master
Last login: Sun Oct 14 18:08:33 2018 from slave2
[root@master ~]#
OK 机器之间已经打通 接下来 我们就需要启动hadoop集群了
启动hadoop集群
进入hadoop的bin目录
第一次启动 需要对namenode 进行格式化
[root@master bin]# ls
hadoop start-jobhistoryserver.sh
hadoop-config.sh start-mapred.sh
hadoop-daemon.sh stop-all.sh
hadoop-daemons.sh stop-balancer.sh
rcc stop-dfs.sh
slaves.sh stop-jobhistoryserver.sh
start-all.sh stop-mapred.sh
start-balancer.sh task-controller
start-dfs.sh
[root@master bin]# ./hadoop namenode .format
格式化之后 就是启动集群 执行脚本start-all.sh
[root@master bin]# ./start-all.sh
执行之后 查看进程
[root@master bin]# jps
3676 NameNode
29358 SecondaryNameNode
3847 JobTracker
31035 Jps
[root@slave1 ~]# jps
29087 Jps
3441 DataNode
3530 TaskTracker
JobTracker 负责分发任务
TaskTracker 执行任务
在hadoop 2.x中是 YARN
到此 我们的安装工作做完了 接下来可以测试一下我们的hadoop是否可用
[root@master bin]# ./hadoop fs -put /etc/fonts/ /
[root@master bin]# ./hadoop fs -ls /
Found 3 items
drwxr-xr-x - root supergroup 0 2018-10-15 00:56 /fonts
完成了文件的存放 说明我们的hadoop1.x搭建成功