windows安装vmwave后准备一台安linux系统的虚拟机(之后要克隆两台,算好硬盘和内存),这里使用centos6.5。
192.168.189.130 hadoop1
192.168.189.131 hadoop2
192.168.189.132 hadoop3
[root@hadoop1 ~]# service iptables stop
如果不关,后续需要将端口一个个加入防火墙规则。
[root@hadoop1 ~]# vim /etc/sysconfig/selinux
SELINUX=enforcing 改为 SELINUX=disabled
[root@hadoop1 ~]# vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hadoop1
[root@hadoop1 ~]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.189.130 hadoop1
192.168.189.131 hadoop2
192.168.189.132 hadoop3
[root@hadoop1 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=yes
IPADDR=192.168.189.130
NETMASK=255.255.255.0
DNS1=114.114.114.114
GATEWAY=192.168.189.2
NM_CONTROLLED=yes
BOOTPROTO=none
[root@hadoop1 ~]# service network restart
这里的ip和网关要根据自己VMware虚拟网卡所在的网络设置,网关不对上不了外网。
参考 https://blog.csdn.net/lyhkmm/article/details/79524712
新建hadoop用户(这里直接使用root也行,生产环境下通常会区分指定各个用户权限)。
[root@hadoop1 ~]# useradd hadoop
[root@hadoop1 ~]# passwd hadoop
设置hadoop用户具有root权限 修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行。
[root@hadoop1 ~]# visudo
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
hadoop ALL=(ALL) ALL
创建hadoop安装目录
[root@hadoop1 ~]# mdkir /app/hadoop/
设置权限
[root@hadoop1 ~]# chown -R hadoop:hadoop /app/hadoop/
克隆出的两台需要修改ip地址为:192.168.189.131 192.168.189.132 。修改主机名为hadoop2 hadoop3,修改方法参考上面的方法。如果克隆后的虚拟机重启网络失败把/etc/sysconfig/network-scripts/ifcfg-eth0的HWADDR和UUID删了。
关于ssh免密码的设置,要求每两台主机之间设置免密码。分别在三台节点的hadoop用户下执行,执行完毕公钥在/home/hadoop/.ssh/id_rsa.pub。
[hadoop@hadoop1 ~]$ ssh-keygen -t rsa
[hadoop@hadoop1 ~]$ ssh-copy-id hadoop1
[hadoop@hadoop1 ~]$ ssh-copy-id hadoop2
[hadoop@hadoop1 ~]$ ssh-copy-id hadoop3
[hadoop@hadoop2 ~]$ ssh-keygen -t rsa
[hadoop@hadoop2 ~]$ ssh-copy-id hadoop1
[hadoop@hadoop2 ~]$ ssh-copy-id hadoop2
[hadoop@hadoop2 ~]$ ssh-copy-id hadoop3
[hadoop@hadoop3 ~]$ ssh-keygen -t rsa
[hadoop@hadoop3 ~]$ ssh-copy-id hadoop1
[hadoop@hadoop3 ~]$ ssh-copy-id hadoop2
[hadoop@hadoop3 ~]$ ssh-copy-id hadoop3
https://hadoop.apache.org/releases.html 下载完后通过远程连接工具上传的/tmp下
[hadoop@hadoop1 ~]$ tar /tmp/zxvf hadoop-2.8.5.tar.gz -C /app/hadoop/
[hadoop@hadoop1 tmp]$ cd /app/hadoop/hadoop-2.8.5/etc/hadoop/
[hadoop@hadoop1 hadoop]$ vi core-site.xml
fs.default.name
hdfs://hadoop1:9000
fs.defaultFS
hdfs://hadoop1:9000
io.file.buffer.size
131072
hadoop.tmp.dir
/app/hadoop/hadoop-2.8.5/tmp
Abase for other temporary directories.
hadoop.proxyuser.hduser.hosts
*
hadoop.proxyuser.hduser.groups
*
[hadoop@hadoop1 hadoop]$ vi hadoop-env.sh
export JAVA_HOME=/usr/lib/java/jdk1.8.0_191
[hadoop@hadoop1 hadoop]$ vi hdfs-site.xml
dfs.namenode.secondary.http-address
hadoop1:9001
dfs.namenode.name.dir
file:/app/hadoop/hadoop-2.8.5/name
dfs.datanode.data.dir
file:/app/hadoop/hadoop-2.8.5/data
dfs.replication
2
dfs.webhdfs.enabled
true
[hadoop@hadoop1 hadoop]$ vi mapred-site.xml
mapreduce.framework.name
yarn
mapreduce.jobhistory.address
hadoop1:10020
mapreduce.jobhistory.webapp.address
hadoop1:19888
[hadoop@hadoop1 hadoop]$ vi mapred-env.sh
添加
export JAVA_HOME=/usr/lib/java/jdk1.8.0_191
[hadoop@hadoop1 hadoop]$ vi yarn-site.xml
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
yarn.resourcemanager.address
hadoop1:8032
yarn.resourcemanager.scheduler.address
hadoop1:8030
yarn.resourcemanager.resource-tracker.address
hadoop1:8031
yarn.resourcemanager.admin.address
hadoop1:8033
yarn.resourcemanager.webapp.address
hadoop1:8088
[hadoop@hadoop1 hadoop]$ vi slaves
hadoop1
hadoop2
hadoop3
[hadoop@hadoop1 hadoop]$ scp -r /app/hadoop/hadoop-2.8.5 hadoop@hadoop2:/app/hadoop/
[hadoop@hadoop1 hadoop]$ scp -r /app/hadoop/hadoop-2.8.5 hadoop@hadoop3:/app/hadoop/
[hadoop@hadoop1 hadoop]$ sudo vi /etc/profile
export HADOOP_CONF_DIR=/app/hadoop/hadoop-2.8.5/etc/hadoop
export HADOOP_HOME=/app/hadoop/hadoop-2.8.5
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
[hadoop@hadoop1 hadoop]$ source /etc/profile
另外两台节点也要配置/etc/profile环境变量,可以直接scp过去
第一次启动,需要格式化namenode,以后就不用了。
[hadoop@hadoop1 hadoop]$ hdfs namenode -format
可以一键启动,至于start-all.sh具体启动了什么可以查看脚本。
[hadoop@hadoop1 sbin]$ ./start-all.sh
查看进程
[hadoop@hadoop1 sbin]$ jps
52608 ResourceManager
52929 Jps
52275 DataNode
52133 NameNode
52440 SecondaryNameNode
52715 NodeManager
也可以只启动具体服务
[hadoop@hadoop1 sbin]$ ./start-dfs.sh
[hadoop@hadoop1 sbin]$ ./start-yarn.sh
查看web ui http://hadoop1:50070/dfshealth.html windows的hosts文件上需要添加hadoop1的解析。
一键停止,也可以指定停止和启动类似
[hadoop@hadoop1 sbin]$ ./stop-all.sh
生产环境使用,和上面类似,需要使用Zookeeper注册中心,配置文件和启动命名有所不同。