总体思路,准备主从服务器,配置主服务器可以无密码SSH登录从服务器,解压安装JDK,解压安装Hadoop,配置hdfs、mapreduce等主从关系。
本教程用的是Centos7.2系统,Hadoop版本2.8.0
本文方法于2017年4月14日测试通过
一、准备3台服务器
可以是实体机,虚拟机或是云主机。选择CentOS7 Minimal的ISO文件即可(如果是自己安装)。
master
node1
node2
二、配置主机
(1)创建用户密码hadoop/hadoop
[root@localhost home]# adduser hadoop [root@localhost home]# passwd hadoop ##然后输入密码
(2)修改主机名
[root@localhost hadoop]# sudo hostnamectl set-hostname "master" ##其他两台改为对应的名称 [root@localhost hadoop]# hostnamectl status --transient master [root@localhost hadoop]# hostnamectl status --static master
(3)修改/etc/hosts
[root@localhost hadoop]# vim /etc/hosts 127.0.0.1 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 192.168.3.166 master 192.168.3.171 node1 192.168.3.172 node2
三、设置ip
(1)设置静态IP
这一步可以在路由器中进行,只要保证每台主机的ip地址固定就行
已有静态IP的话,可以跳过这一步。
如果是虚拟机的话:
首先关闭VMware的DHCP:
Edit->Virtual Network Editor
选择VMnet8,去掉Use local DHCP service to distribute IP address to VMs选项。点击NAT Settings查看一下GATEWAY地址:
点击OK就可以了。
进入如下目录
[root@localhost hadoop]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# ls
ifcfg-ens33 ifdown-bnep
[root@localhost network-scripts]# vim ifcfg-ens33
修改 BOOTPROTO="static"
添加如下内容
NETMASK=255.255.255.0
IPADDR=192.168.3.166
PREFIXO=24
GATEWAY=192.168.3.2
DNS1=192.168.3.2
:wq 保存并退出
重启网络
[root@localhost network-scripts]# service network restart
测试 ping www.baidu.com
(2)关闭防火墙
如果防火墙未安装或未开启,就跳过这一步
systemctl stop firewalld.service ##关闭防火墙 systemctl disable firewalld.service ##永久关闭
(3)安装软件
[root@master ~]# yum install -y tree
四、安装ssh,并且设置无密码登陆
切换用户:
[root@master ~]# su hadoop
进入用户主目录:
[hadoop@master root]$ cd ~
创建文件夹:
[hadoop@master ~]$ mkdir .ssh
修改权限(可选):
[hadoop@master ~]$ chmod 744 .ssh
生成加密文件:
[hadoop@master ~]$ ssh-keygen -t rsa -P '' ##回车即可
追加文件:
[hadoop@master ~]$ cat ~/.ssh/id_rsa.pub>>~/.ssh/authorized_keys
修改权限:
[hadoop@master ~]$ chmod 644 ~/.ssh/authorized_keys
切换回root用户:
[hadoop@master ~]$ su
编辑文件:
[root@master hadoop]# vim /etc/ssh/sshd_config
确保下面的可用(去掉前面的#)
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
:wq ##保存并退出
重启服务:
[root@master hadoop]# service sshd restart
切换用户:
[root@master hadoop]# su hadoop
验证:
[hadoop@master ~]$ ssh localhost
或者:
[hadoop@master ~]$ ssh master
第一次登陆直接输入yes即可,以后即可免登陆
先设置这些,主机间的配置稍后介绍。
五、安装Java
六、安装配置hadoop
root用户登录
进入hadoop文件目录:
[root@master opt]# cd /opt
解压hadoop文件:
[root@master opt]# tar xzvf hadoop-2.8.0.tar.gz
改变用户及群组:
[root@master opt]# chown -R hadoop:hadoop hadoop-2.8.0
设置环境变量:
[root@master opt]# vim /etc/profile
在文件末尾添加如下
export HADOOP_HOME=/opt/hadoop-2.8.0 export PATH=$PATH:$HADOOP_HOME/bin
:wq ##保存退出
刷新配置:
[root@master opt]# . /etc/profile
或者
[root@master opt]# source /etc/profile
验证:
[root@master opt]# echo $HADOOP_HOME /opt/hadoop-2.8.0
切换用户:
[root@master etc]# su hadoop
进入如下文件夹并创建下列文件夹
[hadoop@master etc]$ cd /opt/hadoop-2.8.0 [hadoop@master hadoop-2.8.0]$ mkdir -p dfs/name [hadoop@master hadoop-2.8.0]$ mkdir -p dfs/data [hadoop@master hadoop-2.8.0]$ mkdir -p tmp
进入文件夹:
[hadoop@master hadoop-2.8.0]$ cd etc/hadoop
配置slaves :
[hadoop@master hadoop]$ vim slaves node1 node2
:wq ##保存并退出
修改hadoop-env.sh和yarn-env.sh
注:这里必须用绝对地址
[hadoop@master hadoop]$ vim hadoop-env.sh export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
[hadoop@master hadoop]$ vim yarn-env.sh export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
修改core-site.xml
[hadoop@master hadoop]$ vim core-site.xml
fs.defaultFS hdfs://master:9000 hadoop.tmp.dir /opt/hadoop-2.8.0/tmp
修改hdfs-site.xml
[hadoop@master hadoop]$ vim hdfs-site.xml
dfs.namenode.name.dir file:/opt/hadoop-2.8.0/dfs/name dfs.datanode.data.dir file:/opt/hadoop-2.8.0/dfs/data dfs.replication 2 dfs.namenode.secondary.http-address master:9001 dfs.permissions false
配置mapred-site.xml
[hadoop@master hadoop]$ cd /opt/hadoop-2.8.0 [hadoop@master hadoop-2.8.0]$ cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml [hadoop@master hadoop-2.8.0]$ vim etc/hadoop/mapred-site.xml
mapreduce.framework.name yarn mapreduce.jobtracker.http.address master:50030 mapreduce.jobhistory.address master:10020 mapreduce.jobhistory.webapp.address master:19888
配置yarn-site.xml
[hadoop@master hadoop-2.8.0]$ vim etc/hadoop/yarn-site.xml
yarn.nodemanager.aux-services mapreduce_shuffle yarn.nodemanager.auxservices.mapreduce.shuffle.class org.apache.hadoop.mapred.ShuffleHandler yarn.resourcemanager.address master:8032 yarn.resourcemanager.scheduler.address master:8030 yarn.resourcemanager.resource-tracker.address master:8031 yarn.resourcemanager.admin.address master:8033 yarn.resourcemanager.webapp.address master:8088
七、配置另两台机器
(1)重复上述二~五的操作
(2)复制Hadoop文件
scp -r /opt/hadoop 192.168.3.171:/opt/ scp -r /opt/hadoop 192.168.3.172:/opt/
(3)配置ssh无密码登录
在master机器上
[hadoop@master .ssh]$ ssh-copy-id hadoop@node1
在salve机器上
[root@node1 ~]# cat /home/hadoop/.ssh/id_rsa.pub | ssh hadoop@master 'cat >> ~/.ssh/authorized_keys'
两台机器修改的内容相似
八、格式化master的namenode,启动并测试
以hadoop用户登录
[hadoop@master hadoop-2.8.0]$ hdfs namenode -format
启动:
[hadoop@master hadoop-2.8.0]$ ./sbin/start-dfs.sh
启动:
[hadoop@master hadoop-2.8.0]$ ./sbin/start-yarn.sh
在各个机器上用jps查看节点
查看master的jps
[hadoop@master hadoop-2.8.0]$ jps 12121 Jps 10715 NameNode 10928 SecondaryNameNode 11087 ResourceManager
查看slave的jps
[hadoop@slave1 logs]$ jps 8030 Jps 7122 DataNode 7254 NodeManager
查看各节点日志
查看master是否监听其他节点
[hadoop@master hadoop-2.8.0]$ netstat -an | grep 9000
浏览器查看
浏览器打开 http://master:50070/,会看到hdfs管理页面
浏览器打开 http://master:8088/,会看到hadoop进程管理页面
浏览器打开 http://master:8088/cluster 查看cluster情况
验证(WordCount验证)
1.dfs上创建input目录
[hadoop@master hadoop-2.8.0]$ bin/hadoop fs -mkdir -p input
2.把hadoop目录下的README.txt拷贝到dfs新建的input里
[hadoop@master hadoop-2.8.0]$ bin/hadoop fs -copyFromLocal README.txt input
3.运行WordCount
[hadoop@master hadoop-2.8.0]$ bin/hadoop jar share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.8.0-sources.jar org.apache.hadoop.examples.WordCount input output
4.运行完毕后,查看单词统计结果
[hadoop@master hadoop-2.8.0]$ bin/hadoop fs -cat output/*
假如程序的输出路径为output,如果该文件夹已经存在,先删除
[hadoop@master hadoop-2.8.0]$ bin/hadoop dfs -rmr output
关闭hadoop
[hadoop@master hadoop-2.8.0]$ ./sbin/stop-dfs.sh [hadoop@master hadoop-2.8.0]$ ./sbin/stop-yarn.sh
安装成功后的网页图: