内容简介:本次配置基于 Hadoop2.9.2,其中 Standalone 在 CentOS 7.2 系统下进行配置, Pseudo-Distributed 模式在 MacOS 10.14.4 上进行配置,Fully-Distributed 模式在腾讯云主机上进行配置,集群由两台云主机组成,分别运行 Ubuntu 14.04.1 和 CentOS 7.2 系统。下载解压之后的 Hadoop 默认就是 Standalone 模式,可直接运行 wordcount 进行测试同时再开一个终端在作业运行的时候输入 jps 查看
本次配置基于 Hadoop2.9.2,其中 Standalone 在 CentOS 7.2 系统下进行配置, Pseudo-Distributed 模式在 MacOS 10.14.4 上进行配置,Fully-Distributed 模式在腾讯云主机上进行配置,集群由两台云主机组成,分别运行 Ubuntu 14.04.1 和 CentOS 7.2 系统。
环境准备
-
Java 7/8
Hadoop 2.7.x to 2.x 支持 Java 7/8,其它 Hadoop 版本支持的 Java 版本请点击:link: 进行查询
下载:
sudo yum install java-1.8.0-openjdk-devel //centos 安装 Java8,ubuntu 下需要用 apt-get 进行安装 复制代码
配置环境变量:
cd ~ vi .bash_profile export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.i386 source .bash_profile 复制代码
-
ssh 和 rsync: 用
ssh和rsync命令测试后发现 Centos 本身就有,所以无须进行安装。 -
Hadoop
sudo wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.9.2/hadoop-2.9.2.tar.gz tar -zxvf hadoop-2.9.2.tar.gz 复制代码
这里的下载地址最好根据云主机所在的区域进行选择,如果是国内的云主机最好使用国内的镜像地址,这样下载会快很多。
Standalone 模式
下载解压之后的 Hadoop 默认就是 Standalone 模式,可直接运行 wordcount 进行测试
mkdir input //hadoop 的同级目录创建 cp hadoop-2.9.2/LICENSE.txt input/ hadoop-2.9.2/bin/hadoop jar hadoop-2.9.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar wordcount input output //运行 wordcount cat output/part-r-00000 //查看结果 复制代码
同时再开一个终端在作业运行的时候输入 jps 查看进程
可以看到 Standalone 模式下 Hadoop 只会启动 RunJar 进程来运行整个作业
Pseudo-Distributed 模式
-
修改 etc/hadoop/core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <!--配置访问 nameNode 的 URI--> <value>hdfs://localhost:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <!--指定临时目录,MapReduce 和 HDFS 的许多路径配置依赖此路径--> <value>/home/hadoop/tmp</value> </property> </configuration> 复制代码 -
修改 etc/hadoop/hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <!--配置文件的副本数量--> <value>1</value> </property> <property> <name>dfs.permissions</name> <value>false</value> <!--关闭防火墙--> </property> </configuration> 复制代码 -
配置免密登录
ssh localhost 测试能否免密登录(如果能够则跳过以下操作) ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 0600 ~/.ssh/authorized_keys 复制代码
-
修改 etc/hadoop/hadoop-env.sh(如果提示找不到 JAVA_HOME)
export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.i386 //上面配置的 JAVA_HOME 好像没起作用 复制代码
-
格式化 HDFS
bin/hdfs namenode -format 复制代码
-
启动 HDFS
sbin/start-dfs.sh 复制代码
启动后输入 jps 看到以下进程即成功,这个时候可以通过 http://localhost:50070/ 访问 NameNode
-
运行 wordcount
bin/hdfs dfs -mkdir /user bin/hdfs dfs -mkdir /user/<username> bin/hdfs dfs -mkdir /user/<username>/input bin/hdfs dfs -put LICENSE.txt /user/<username>/input //创建文件夹并上传文件 bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar wordcount input output //运行 wordcount bin/hdfs dfs -cat output/part-r-00000 //显示结果 复制代码
在另一终端输入 jps 可以看到运行时的以下进程
依旧是用 RunJar 提交,只是读取和写入采用了 HDFS。
-
通过 YARN 执行 Job(可选配置,不过为了更接近真实集群还是建议配置)
-
修改 etc/hadoop/mapred-site.xml
cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml vi etc/hadoop/mapred-site.xml 复制代码
增加以下内容
<configuration> <property> <name>mapreduce.framework.name</name> <!--表明运行在 YARN 上--> <value>yarn</value> </property> </configuration> 复制代码 -
修改 etc/hadoop/yarn-site.xml
<configuration> <property> <name>yarn.resourcemanager.hostname</name><!--设置resourcemanager的hostname--> <value>localhost</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <!--指定 nodemanager 获取数据的方式--> <value>mapreduce_shuffle</value> </property> </configuration> 复制代码 -
启动 YARN
sbin/start-yarn.sh 复制代码
启动成功后可以通过 http://localhost:8088/ 访问 ResourceManager 节点,并且输入 jps 会显示以下进程
其中 ResourceManager 和 NodeManager 是属于 YARN 的进程。
-
重复
7的操作,输入 jps 查询进程可以看到新增加了 YarnChild 进程和 MRAppMaster 进程,之所以有两个 YarnChild 进程是因为输入文件夹中存在两个文本文件,这说明了 MapReduce 是通过创建 多个进程并行 计算的。
-
Fully-Distributed 模式
集群包括两个节点,节点名分别为 master 和 slave,master 和 slave 的节点配置过程基本一致,以下是配置过程(两个节点差异配置会进行注明,建议先配置好 master 节点的 Hadoop,然后用 scp 命令复制到 slave 节点进行修改。):
-
修改 /etc/hosts
152.136.76.12 master //腾讯云公网ip 94.191.43.137 slave 复制代码
-
免密登录( :warning:两个节点的登录名必须一致,这里都为 root )
master 节点配置本机免密登录以及移动公钥到子节点 ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 0600 ~/.ssh/authorized_keys scp ~/.ssh/id_rsa.pub root@slave:~/ slave 节点配置 master 节点免密登录 cat ~/id_rsa.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys 复制代码
-
修改 etc/hadoop/core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <!--配置访问 nameNode 的 URI--> <value>hdfs://master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <!--指定临时目录,MapReduce 和 HDFS 的许多路径配置依赖此路径--> <value>/home/hadoop/tmp</value> </property> </configuration> 复制代码 -
修改 etc/hadoop/hdfs-site.xml
<configuration> <property> <name>dfs.replication</name> <!--配置文件的副本数量--> <value>1</value> </property> <property> <name>dfs.permissions</name> <value>false</value> <!--关闭防火墙--> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>slave:50090</value> <!-- 指定secondarynamenode位置 --> </property> </configuration> 复制代码 -
修改 etc/hadoop/mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <!--表明运行在 YARN 上--> <value>yarn</value> </property> </configuration> 复制代码 -
修改 etc/hadoop/yarn-site.xml
<configuration> <property> <name>yarn.resourcemanager.hostname</name><!--设置resourcemanager的hostname--> <value>master</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <!--指定 nodemanager 获取数据的方式--> <value>mapreduce_shuffle</value> </property> </configuration> 复制代码 -
修改 etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.i386 //master 和 slave 填入各自路径 export HADOOP_LOG_DIR=/root/hadoop/hadoop-2.9.2/logs //可以自己选定 复制代码
-
修改 etc/hadoop/mapred-env.sh
export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.i386 复制代码
-
修改 etc/hadoop/yarn-env.sh
export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.i386 export YARN_LOG_DIR=/root/hadoop/hadoop-2.9.2/logs 复制代码
-
修改 etc/hadoop/slaves
master slave 复制代码
-
启动 HDFS 和 YARN
bin/hdfs namenode -format //首次运行时格式化 sbin/start-dfs.sh sbin/start-yarn.sh 复制代码
在 master 和 slave 节点分别输入 jps 后有
此时可以通过 http://152.136.76.12:8080 (ip 为 master 的公网 ip) 以及 http://152.136.76.12:50070 分别访问 HDFS 的 web 界面和 YARN 的 web 界面,可以看到 HDFS 下有一个 slave 节点,YARN 下有两个节点
-
运行 wordcount(与伪分布式中一致)
bin/hdfs dfs -mkdir /user bin/hdfs dfs -mkdir /user/<username> bin/hdfs dfs -mkdir /user/<username>/input bin/hdfs dfs -put LICENSE.txt /user/<username>/input bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar wordcount input output bin/hdfs dfs -cat output/part-r-00000 复制代码
继续用 jps 查看两台主机的进程
可以看到集群模式中的进程与伪集群模式中的进程没有区别,唯一的区别在于进程在不同的主机上运行。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
XML Hacks
Michael Fitzgerald / O'Reilly Media, Inc. / 2004-07-27 / USD 24.95
Developers and system administrators alike are uncovering the true power of XML, the Extensible Markup Language that enables data to be sent over the Internet from one computer platform to another or ......一起来看看 《XML Hacks》 这本书的介绍吧!