在上一篇【第一个Hadoop实例: juejin.cn/post/684490… 】中已经安装了jdk和hadoop,并且配置了环境变量,这篇文章是在原有单机版的基础上部署分布式的Hadoop。
虚拟机准备
将上一篇中配置的虚拟机克隆3份,然后修改IP地址,关闭防火墙,设置主机名称。这些基本操作不是本篇重点,所以不再赘述。提醒一点,修改完主机名称记得修改/etc/hosts文件 。
本篇示例中虚拟机配置:
hadoop001:192.168.48.111
hadoop002:192.168.48.112
hadoop003:192.168.48.113
SSH无密码登录
-
进入到我的home目录
cd ~/.ssh -
生成公钥和私钥,输入下面指令,然后敲三个回车,就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
ssh-keygen -t rsa -
将公钥拷贝到要免密登录的目标机器上
ssh-copy-id 192.168.48.112 ssh-copy-id 192.168.48.113
配置集群
集群部署规划
修改配置文件
配置文件所在目录:/opt/module/hadoop-2.7.2/etc/hadoop/
-
core-site.xml
<configuration> <!-- 指定HDFS中NameNode的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop001:9000</value> </property> <!-- 指定hadoop运行时产生的文件存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/module/hadoop-2.7.2/data/tmp</value> </property> </configuration> -
hadoop-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_131 -
hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop003:50090</value> </property> </configuration> -
slaves
hadoop001 hadoop002 hadoop003 -
yarn-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_131 -
yarn-site.xml
<configuration> <!-- Site specific YARN configuration properties --> <!-- reducer获取数据的方式 --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- 指定YARN的ResourceManager的地址 --> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop002</value> </property> </configuration> -
mapred-env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_131 -
mapred-site.xml
<configuration> <!-- 指定mr运行在yarn上 --> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
将配置文件复制到集群中其它几台虚拟机
[root@hadoop001 etc]# scp -r hadoop/ root@hadoop002:/opt/module/hadoop-2.7.2/etc
[root@hadoop001 etc]# scp -r hadoop/ root@hadoop003:/opt/module/hadoop-2.7.2/etc
集群启动
-
如果是集群第一次启动,需要格式化namenode
[root@hadoop001 hadoop-2.7.2]# bin/hdfs namenode -format -
启动HDFS
[root@hadoop001 hadoop-2.7.2]# sbin/start-dfs.sh -
启动yarn,注意:应该在ResouceManager所在的机器上启动yarn
[root@hadoop002 hadoop-2.7.2]# sbin/start-yarn.sh -
查看是否启动成功
浏览器访问:http://192.168.48.111:50070
浏览器访问:http://192.168.48.112:8088/cluster
Hadoop启动停止方式
-
各个服务组件逐一启动
(1)分别启动hdfs组件
hadoop-daemon.sh start|stop namenode|datanode|secondarynamenode
(2)启动yarn
yarn-daemon.sh start|stop resourcemanager|nodemanager
-
各个模块分开启动(配置ssh是前提)
(1)整体启动/停止hdfs
start-dfs.sh
stop-dfs.sh
(2)整体启动/停止yarn
start-yarn.sh
stop-yarn.sh
-
全部启动(不建议使用)
start-all.sh
stop-all.sh
操作集群
-
在hdfs文件系统上创建一个input文件夹
[root@hadoop001 hadoop-2.7.2]# bin/hdfs dfs -mkdir -p /user/sixj/mapreduce/wordcount/input -
将测试内容上传到文件系统上
[root@hadoop001 hadoop-2.7.2]# bin/hdfs dfs -put wcinput/wc.input /user/sixj/mapreduce/wordcount/input -
查看文件列表
[root@hadoop001 hadoop-2.7.2]# bin/hdfs dfs -ls /user/sixj/mapreduce/wordcount/input -
查看文件内容
[root@hadoop001 hadoop-2.7.2]# bin/hdfs dfs -cat /user/sixj/mapreduce/wordcount/input/wc.input hadoop yarn hadoop mapreduce sixj JAVA sixj -
下载文件到本地
[root@hadoop001 hadoop-2.7.2]# hadoop fs -get /user/sixj/mapreduce/wordcount/input/wc.input -
删除文件
[root@hadoop001 hadoop-2.7.2]# hadoop fs -rm /user/sixj/mapreduce/wordcount/input/wc.input