老师好像说这部分 面试不会问 + 以后也不咋会用 (#^.^#) 简单记下吧。
软件和操作系统版本
Hadoop框架是采用Java语言编写,需要java环境(jvm)
JDK版本:JDK8版本
集群:
知识点学习:统一使用vmware虚拟机虚拟三台linux节点,linux操作系统:Centos7
项目阶段:统一使用云服务器,5台云服务器节点
Hadoop搭建方式
单机模式:单节点模式,非集群,生产不会使用这种方式
单机伪分布式模式:单节点,多线程模拟集群的效果,生产不会使用这种方式
完全分布式模式:多台节点,真正的分布式Hadoop集群的搭建(生产环境建议使用这种方式)
一、虚拟机准备环境
1. 三台虚拟机(静态IP,关闭防火墙,修改主机名,配置免密登录,集群时间同步)
2. 在/opt目录下创建文件夹
3. Hadoop下载地址:
https://archive.apache.org/dist/hadoop/common/hadoop-2.9.2/
Hadoop官网地址:
http://hadoop.apache.org/
4. 上传hadoop安装文件到/opt/lagou/software
二、集群规划
三、安装hadoop
一、安装hadoop
登录linux121节点:
a.进入/opt/lagou/software,解压安装文件到/opt/lagou/servers
tar -zxvf hadoop-2.9.2.tar.gz -C /opt/lagou/servers
b.查看是否解压成功 ll /opt/lagou/servers/hadoop-2.9.2
c.添加Hadoop到环境变量 vim /etc/profile
##HADOOP_HOME
export HADOOP_HOME=/opt/lagou/servers/hadoop-2.9.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
d.使环境变量生效 source /etc/profile
e.验证hadoop hadoop version
hadoop目录介绍:
1. bin目录:对Hadoop进行操作的相关命令,如hadoop,hdfs等
2. etc目录:Hadoop的配置文件目录,入hdfs-site.xml,core-site.xml等
3. lib目录:Hadoop本地库(解压缩的依赖)
4. sbin目录:存放的是Hadoop集群启动停止相关脚本,命令
5. share目录:Hadoop的一些jar,官方案例jar,文档等
二、集群配置
Hadoop集群配置 = HDFS集群配置 + MapReduce集群配置 + Yarn集群配置
HDFS集群配置:
1、将JDK路径指给HDFS,编辑hadoop.evn.sh export JAVA_HOME=java路径
2、指定NameNode节点以及存储数据的目录,编辑core-site.xml
vim core-site.xml
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://linux121:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/lagou/servers/hadoop-2.9.2/data/tmp</value>
</property>
3、指定SecondNameNode节点,编辑hdfs-site.xml
vim hdfs-site.xml
<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>linux123:50090</value>
</property>
<!--副本数量 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
4、指定DataName从节点,编辑slaves文件,每个节点占一行信息。
vim slaves
linux121
linux122
linux123
MapReduce集群配置:
1、指定MapReduce使用的jdk路径,编辑mapred-env.sh
2、指定MapReduce计算框架运行Yarn资源调度框架,编写mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<!-- 指定MR运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
Yarn集群配置:
1、指定jdk路径,编辑yarn.evn.sh
2、指定ResourceManager的master节点信息,编辑yarn-site.xml
vim yarn-site.xml
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>linux123</value>
</property>
<!-- Reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
3、指定NodeManager节点(slaves已修改)
注意:Hadoop安装目录所属用户和所属用户组信息,默认是501 dialout,而我们操作Hadoop集群的用户使用的是虚拟机的root用户,所以为了避免出现信息混乱,修改Hadoop安装目录所属用户和用户组!!chown -R root:root /opt/lagou/servers/hadoop-2.9.2
三、分发配置
第二部的安装操作仅在一台机器linux121上进行了安装,接下来要做的操作就是在另外两台机器linux122和linux123上进行相同的安装配置,采用rsync远程同步工具,编写集群分发脚本rsync-script。
rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync和scp的区别:用rsync做复制的操作比scp速度快,rsync只对差异文件进行更新,scp是把所有文件都复制过去。
基本语法:rsync -rvl $pdir/$fname $user@host:$pdir/$fname
rsync 参数选项 要拷贝的文件路径/名称 目的用户@主机:目标路径/名称
参数介绍(r:递归;v:显示复制过程;l:拷贝符号链接)
第一步:安装rsync yum -y install rsync
第二部:尝试把software下的hadoop安装软件同步到linux122上,在linux121上执行以下命令:rsync -rvl /opt/lg/software/ root@linux122:/opt/lg/software
思考:如果有n台计算机,则此命令需要执行n次。所以有接下来步骤...
第三步:编写脚本,循环复制文件到集群所有节点的相同目录下
执行:脚本名 要同步的文件名
在/user/local/bin 目录下 编写脚本如下:
#!/bin/bash
#
#1、获取命令输入参数的个数,如果为0,直接退出命令
parmsnum=$#
if((parmsnum==0)); then
echo no params;
exit;
fi
#2、根据传入的参数获取文件名称
p1=$1;
file_name=`basename $p1`
echo file_name=${file_name}
#3、根据输入的参数获取绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=${pdir}
#4、获取用户名
user=`whoami`
#5、循环执行rsync
for((host=121; host<124; host++)); do
rsync -rvl $pdir/$file_name $user@linux$host:$pdir
done
编写玩修改脚本执行权限 chmod 777 rsync-script
执行脚本:rsync-script /opt/lg/servers/hadoop-2.9.2
注意:执行完以上完毕,我在linux122和linux123上 执行hadoop version并未生效,我觉得是没有条件Hadoop环境变量导致的,所以又 vim /etc/profle 加上了
##HADOOP_HOME
export HADOOP_HOME=/opt/lagou/servers/hadoop-2.9.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
之后 source /etc/profle —》hadoop version 成功!✌✌✌
四、启动集群
如果集群第一次启动需要在NameNode所在的节点格式化NameNode,非第一次启动不需要格式化NameNode操作!!!
hadoop namenode -format
成功提示:
并且在 /opt/lagou/servers/hadoop-2.9.2/data/tmp/dfs/name 目录下生成以下内容
一、单节点的启动:
启动HDFS集群:linux121上 hadoop-daemon.sh start namenode
hadoop-daemon.sh start datanode
linux122上 hadoop-daemon.sh start datanode
linux123上 hadoop-daemon.sh start datanode
hadoop-daemon.sh start secondarynamenode
启动yarn集群:linux123上 yarn-daemon.sh start resourcemanager
linux122上 yarn-daemon.sh start nodemanager
linux121上 yarn-daemon.sh start nodemanager
关闭时,start -》stop
二、集群群起:
启动HDFS集群: start-dfs.sh -》即可把三台机器的namenode和datanode都启动
stop-dfs.sh
启动Yarn集群:start-yarn.sh -》即可把resourcemanager和nodemanager都启动
stop-yarn.sh
注意:在NameNode节点上启动HDFS,在ResourceManager节点上启动Yarn
web端查看HDFS界面:http://linux121:50070
五、集群测试
一、HDFS分布式存储体验
hdfs dfs -mkdir -p /test/input -》hdfs上创建文件目录
hdfs dfs - put /root/test.txt /test/input -》把linux本地test.txt文件上传到hdfs上
hdfs dfs -get /test/input/test.txt -》下载hdfs存储系统上文件到本地
二、MapReduce分布式计算体验
hdfs存储系统 /wcinput/wc.txt
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar wordcount /wcinput /wcoutput 计算每个单词个数
查看Yarn集群 运行情况:http://linux123:8088/
发现点击histoty 查看历史记录看不了,需要配置历史服务器,下节继续...
六、配置历史服务器
配置mapred-site.xml 增加以下内容
<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>linux121:10020</value>
</property>
<!-- 历史服务器web端地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>linux121:19888</value>
</property>
将mapred.xml分发到其它节点:rsync-script mapred-site.xml
启动历史服务器:sbin/mr-jobhistory-daemon.sh start historyserver
是因为一个应用可能运行在多个map节点上,需要将应用运行的日志信息从多个task汇总上传到HDFS系统上。-》配置日志的聚集
配置yarn-site.xml 增加如下内容:
<!-- 日志聚集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
<property>
<name>yarn.log.server.url</name>
<value>http://linux121:19888/jobhistory/logs</value>
</property>
然后并分发到其它节点——》重启yarn和historyserver——》重新执行wordcount程序——》再次查看日志即可。
写了也很多,但大部分复制粘贴老师课件^_^,到此hadoop框架可以启动,后面详细记录HDFS、MapReduce、Yarn以及案例。