1.下载软件
a. 下载VirtualBox http://download.virtualbox.org/virtualbox/5.1.18/VirtualBox-5.1.18-114002-Win.exe
b. 下载CentOS http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso
c. 下载XShell与XFtp 请在百度自己搜索与安装
d. 下载jdk http://download.oracle.com/otn-pub/java/jdk/8u121-b13/e9e7ea248e2c4826b92b3f075a80e441/jdk-8u121-linux-x64.rpm
e. 下载hadoop2.7.3 -> http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz
2.安装VirtualBox
下载后请自行安装,安装完需要自行安装linux,此文为centos7.可自行百度教程。
网络配置请参考我之前的文章《Virtualbox配置centos7网络》
在此简单的列举主要步骤如下:
a. 在虚拟机中选用host-only网络
b. vi /etc/sysconfig/network
NETWORKING=yes
c. vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 TYPE=Ethernet IPADDR=192.168.56.200 NETMASK=255.255.255.0
d. 修改主机名hostnamectl set-hostname master (主机名千万不能有下划线!)
e. 重启网络service network restart
f. 互相ping,看是否测试成功,若不成功,注意防火墙的影响。关闭windows或虚拟机的防火墙。
systemctl stop firewalld
systemctl disable firewalld
3.安装JDK
rpm -ivh ./xxxxx.jdk,验证rpm -qa | grep jdk,在命令行中敲java命令,确认jdk已经安装完成
配置环境变量:
JAVA_HOME=/usr/java/jdk1.8.0_91
JRE_HOME=/usr/java/jdk1.8.0_91/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
使环境变量生效:
source /etc/profile
4.安装hadoop
cd /usr/local
tar –xvf ./hadoop-2.7.3.tar.gz
把目录修改为hadoop mv hadoop-2.7.3 hadoop
修改hadoop-env.sh
vi /usr/local/hadoop/etc/hadoop/hadoop-env.sh
修改export JAVA_HOME 语句为 export JAVA_HOME=/usr/java/default
把/usr/local/hadoop/bin和/usr/local/hadoop/sbin设到PATH中
vi /etc/profile
追加 export PATH=$PATH:/usr/hadoop/bin:/usr/hadoop/sbin
source /etc/profile
测试hadoop命令是否可以直接执行,任意目录下敲hadoop
5.关闭虚拟机,复制三份
6.开机后,自行配置各自的网络配置,参照之前步骤。
主要是要修改:/etc/hosts,注意:四个节点的ip以及hostname都加上
7.分布式集群配置
7.1 配置core-site.xml
在所有的节点上都应该修改/etc/hadoop/core-site.xml.注意:需要修改tmp目录,不然默认是linux的tmp目录,这样会出现意想不到的错误,因为linux重启后,会删除/tmp目录下的内容。
fs.defaultFS
hdfs://master:9000
hadoop.tmp.dir
/usr/local/hadoop/current/tmp
fs.trash.interval
4320
注意:必须在各个机器上一定要保持此配置的一致性。这里配置的是master的地址,与对外通讯的端口,slaves需要知道master对外提供通讯的地址与端口,所以各台机器需要保持一致,否则会在web管理页面发现live nodes是0.正常应该是slaves的数量。
7.2配置hdfs-site.xml
在所有节点上修改/etc/hadoop/hdfs-site.xml
dfs.namenode.name.dir
/usr/local/hadoop/current/dfs/name
dfs.datanode.data.dir
/usr/local/hadoop/current/dfs/data
dfs.replication
3
dfs.webhdfs.enabled
true
dfs.permissions.superusergroup
staff
dfs.permissions.enabled
false
7.3格式化HDFS
执行以下命令即可:
hdfs namenode -format
8.启动集群
在master上启动hadoop-daemon.sh start namenode
在slave上启动hadoop-daemon.sh start datanode
用hdfs dfsadmin -report观察集群配置情况,如图所示,含有三个从节点
查看端口号:netstat -ntlp
通过http://192.168.56.100:50070/web界面观察集群运行情况
用hadoop-daemon.sh stop ...手工关闭集群
9.集中管理
9.1对集群进行集中管理,需要修改以下配置文件:
修改master上/etc/hadoop/slaves文件,每一个slave占一行
slave1
slave2
slave3
9.2使用start-dfs.sh启动集群,并观察结果
以上需要每个节点的密码都需要重新输入一下
启动成功:
9.3使用stop-dfs.sh停止集群
停止集群也需要每次输入密码
10.配置SSH免密登录
在上一步骤中,每次都需要输入密码,非常麻烦,故需要配置一下SSH的免密登录。
执行如下步骤:
cd
ls -la
cd .ssh
ssh-keygen -t rsa (四个回车)
会用rsa算法生成私钥id_rsa和公钥id_rsa.pub
利用ssh-copy-id slaveX命令把生成的公钥copy到其他的节点上。
此时在yxxy-node2节点就可以有以下文件:
以此类推,其他两个从节点也是这样执行即可。
再次ssh slave1
此时应该不再需要密码
重新使用start-dfs.sh启动集群
此时执行启动命令,则还是需要输入主节点的密码,故也需要把公钥拷贝一份到自己的主节点上
停止集群stop-dfs.sh
11.web管理
修改windows中的C:\Windows\System32\drivers\etc\hosts文件,可以通过名字访问集群web界面。
12.基本操作
12.1使用hdfs dfs 或者hadoop fs命令对文件进行增删改查的操作
hadoop fs -ls /
hadoop fs -put file /
hadoop fs -mkdir /dirname
hadoop fs -text /filename
hadoop fs -rm /filename
12.2 动态扩展
设定dfs.namenode.heartbeat.recheck-interval为10000,然后停掉其中一台slave,观察自动复制情况。
启动停掉的slave节点,通过网页观察datanode的动态添加
12.3 横向扩展
添加新的节点,体会hadoop的横向扩展,步骤如下:
启动slave4,关闭防火墙,修改hostname
修改etc/hosts,加入对自己以及其他机器的解析,重启网络
在master中设定对于slave4的解析
启动slave4的datanode,通过网页进行观察
hdfs dfsadmin –shutdownDatanode slave4:50020
13.遇到问题
在启动集群的时候,主节点(namenode)正常启动,datanode启动2个,一个未启动,查看日志显示如下异常信息:
经过网上查询原因说是/etc/hosts中的第一第二行不能删除。把他加上即可,如下图所示: