Hadoop环境搭建

Linux下Hadoop环境搭建学习

总体参考:https://gitbook.cn/books/5954c9600326c7705af8a92a/index.html
下面是简要记录与留痕

虚拟机准备

1.VMware安装

下载地址:https://my.vmware.com/cn/web/vmware/details?downloadGroup=WKST-1415-WIN&productId=686&rPId=28937

安装参考:https://blog.csdn.net/qq_40950957/article/details/80467513

2.CentOS7安装

下载地址:http://mirrors.aliyun.com/centos/7/isos/x86_64/

3.Linux网络配置

1)配置IP、子网掩码、网关
因为NAT里设置网段为100.x,所以这台机器可以设置为192.168.100.10网关和NAT一致,为192.168.100.2

vi /etc/sysconfig/network-scripts/ifcfg-ens33

2)配置DNS

【DNS 是域名系统 (Domain Name System) 的缩写,简单的说,我们要访问百度,然后在浏览器中输入百度的地址就可以访问百度的网站了。】

 vi /etc/resolv.conf
 nameserver 202.106.196.115

到这里

ping www.baidu.com #此命令应该可以ping通

3)永久修改hostname

vi /etc/sysconfig/network
NETWORKING=yes #使用网络
HOSTNAME=bigdata-senior01.thank.com #设置主机名

4)配置host

vi /etc/hosts 
192.168.100.10 bigdata-senior01.thank.com


5)防火墙设置

firewall-cmd --state
service firewalld start
service firewalld stop

6) 重启网络

systemctl restart network.service

7)重启虚拟机

shutdown -r now
reboot

环境准备

1).JDK安装
下载地址:
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

WinSCP上传到usr/java目录
解压 :tar -zxvf jdk-8u144-linux-x64.tar.gz

配置:

vi etc/profie

环境变量生效:source etc/profile

Hadoop部署模式

hadoop部署模式有:本地模式、伪分布模式、完全分布模式及HA完全分布模式。
hadoop集群是基于master/slave模式,Namenode和Jobtracker属于master,Datenode和Tasktracker属于slqve,master只有一个,而slave有多个。

本地模式

最简单的模式,所有模块都运行在一个JVM进程中,使用本地文件系统,而不是HDFA,本地模式主要用于本地开发过程中的运行调试。下载hadoop安装包不用任何设置,默认就是本地模式。

hadoop包下载:
https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.0.3/hadoop-3.0.3.tar.gz

DEMO:使用本地文件系统和本地MapReduce运行器来统计各个单词出现的次数
1)输入文件:存放单词

/usr/hadoop/localhadoop/data/wc.input

2)运行hadoop自带的MapReduce的demo

[hadoop-3.0.0]# ] bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.3.jar wordcount ../data/wc.input output

3)输出结果:_SUCCESS表示成功;part-r-00000统计结果

伪分布模式

伪分布式模式下,hadoop将所有进程运行于同一台主机上,但此时Hadoop将使用分布式文件系统,而且各jobs也是由JobTracker服务管理的独立进程。同时,由于伪分布式的hadoop集群只有一个节点,因此HDFS的块复制将限制为单个副本,其secondary-master和slave也都将运行于本地主机。此种模式除了并非真正意义的分布式之外,其程序执行逻辑完全类似于完全分布式,因此,常用于开发人员测试程序执行。
hadoop的配置共四种级别:集群、进程、作业和单独操作,前两类由集群管理员负责配置,后面的两类则属于程序员的工作范畴。
hadoop的配置文件位于conf目录中,其中的core-site.xml、mapred-site.xml和hdfs-site.xml三个配置文件最为关键。core-site.xml用于配置hadoop集群的特性,它作用于全部进程及客户端,mapred-site.xml配置mapreduce集群的工作属性,hdfs-site.xml配置hdfs集群的工作属性。
另外还有三个配置文件需要留意。hadoop-env.sh是Hadoop的多个脚本执行时source的配置信息,其用于为Hadoop指定运行时使用的JDK、各进程的JDK属性、PID文件及日志文件的保存目录等。masters则用于指定辅助名称节点(SecondaryNameNode)的主机名或主机地址,slaves用于指定各从服务器(TaskTracker或DataNode)的主机名或主机地址。对伪分布式的Hadoop集群来讲,这些节点均为本机。

DEMO
1)创建一个名字为hadoop的普通用户

useradd hadoop
passwd hadoop
给hadoop用户sudo权限(sudo命令是以系统管理员的身份执行命令)
vi /etc/sudoers
root       ALL=(ALL)      ALL
hadoop  ALL=(root)  NOPASSWD:ALL
切换到hadoop用户
su  -   hadoop
创建目录
sudo mkdir fakehadoop
指定所有者(不然一直得带着sudo执行命令):将fakehadoop文件夹及子目录的权限和组均改为hadoop用户
sudo chown -R hadoop:hadoop fakehadoop 
【注意区分chmod && chown】
复制文件
cp -r ../localhadoop/hadoop-3.0.3 ./

2)配置
配置hadoop环境变量

vi etc/profile
export HADOOP_HOME=/usr/hadoop/fakehadoop/hadoop-3.0.3
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
source /etc/profile 配置生效
echo $HADOOP_HOME

配置hadoop-env.sh, mapred-env.sh, yarn-env.sh文件的JAVA_HOME参数

vi ${HADOOP_HOME}/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_201
【G跳到文本末尾;gg跳到文本第一行】

配置core-site.xml:需要创建临时目录

配置、格式化、启动HDFS
配置hdfs-site.xml:配置HDFS存储时的备份数量,因为这里是伪分布式环境只有一个节点,所以设置为1。
格式化HDFS:对HDFS这个分布式文件系统中的DataNode进行分块,统计所有分块后的初始元数据存储在NameNode中
hdfs namenode -format
格式化成功标志:core-site.xml里hadoop.tmp.dir指定目录有dfs目录

启动NameNode
sbin/hadoop-daemon.sh start namenode
【命令行满屏,上面的内容看不到,可以shift+pgup】

启动DataNode
sbin/hadoop-daemon.sh start datanode

启动SecondaryNameNode
sbin/hadoop-daemon.sh start secondarynamenode

JPS命令查看是否已经启动成功,有结果就表示启动成功

HDFS上测试创建目录、上传、下载文件
a.创建目录
hdfs dfs -mkdir /demo1
b.上传文件到HDFS
hdfs dfs -put ${HADOOP_HOME}/etc/hadoop/core-site.xml /demo1
c.读取HDFS文件内容
hdfs dfs -cat /demo1/core-site.xml
d.下载文件到本地
hdfs dfs -get /demo1/core-site.xml
【更改时间:date -s “2019-01-19 19:11:00”;查看时间:date】
【将时间写入bios,避免重启失效:hwclock -w】

配置、启动YARN
配置mapred-site.xml:指定mapreduce运行在yarn框架上

<configuration>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</configuration>

配置yarn-site.xml
yarn.nodemanager.aux-services配置了yarn的默认混洗方式,选择为mapreduce的默认混洗算法。
yarn.resourcemanager.hostname指定了Resourcemanager运行在哪个节点上。

<configuration>
    <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
    </property>
    <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>bigdata-senior01.thank.com</value>
    </property>
</configuration>

启动resourcemanager
${HADOOP_HOME}/sbin/yarn-daemon.sh start resourcemanager

启动nodemanager
${HADOOP_HOME}/sbin/yarn-daemon.sh start nodemanager

同样jps查看是否启动成功

YARN的Web页面
YARN的Web客户端端口号是8088,通过http://192.168.100.10:8088/可以查看。访问不了,可能防火墙没关。

启动、运行MapReduce Job
hadoop的share自带了一些jar包,里面有一些mapreduce实例,可以运行以上搭建好的hadoop平台,这边我们运行最经典的WordCount例子。

启动HDFS
启动NameNode,DataNode,SecondaryNameNode
【sbin/hadoop-daemon.sh start namenode】
启动YARN
启动resourcemanager,启动nodemanager
【sbin/yarn-daemon.sh start resourcemanager】

创建输入目录
bin/hdfs dfs -mkdir -p /wordcountdemo/input

上传输入文件到HDFS的上面那个目录
bin/hdfs dfs -put …/data/wc.input /wordcountdemo/input
上传成功标志:hdfs dfs -ls /wordcountdemo/input

运行WordCount MapReduce Job
bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.3.jar wordcount /wordcountdemo/input /wordcountdemo/output
成功标志

【不启动YARN这个也OK】

停止hadoop

sbin/hadoop-daemon.sh stop namenode stopping namenode
sbin/hadoop-daemon.sh stop datanode stopping datanode
sbin/yarn-daemon.sh stop resourcemanager stopping resourcemanager
sbin/yarn-daemon.sh stop nodemanager stopping nodemanager

Hadoop各个功能模块的理解
1)HDFS模块
HDFS负责大数据的存储,通过将大文件分块后进行分布式存储方式,突破了服务器硬盘大小的限制,解决了单台机器无法存储大文件的问题,HDFS是个相对独立的模块,可以为YARN提供服务,也可以为HBase等其他模块提供服务。
2)YARN模块
YARN是一个通用的资源协同和任务调度框架,是为了解决Hadoop1.x中MapReduce里NameNode负载太大和其他问题而创建的一个框架。YARN是个通用框架,不止可以运行MapReduce,还可以运行Spark、Storm等其他计算框架。
3)MapReduce模块
MapReduce是一个计算框架,它给出了一种数据处理的方式,即通过Map阶段、Reduce阶段来分布式地流式处理数据。它只适用于大数据的离线处理,对实时性要求很高的应用不适用。

开启历史服务
Hadoop开启历史服务可以在web页面上查看Yarn上执行job情况的详细信息。可以通过历史服务器查看已经运行完的Mapreduce作业记录,比如用了多少个Map、用了多少个Reduce、作业提交时间、作业启动时间、作业完成时间等信息。
配置mapred-site.xml

<property>
    <name>mapreduce.jobhistory.address</name>
    <value>192.168.100.10:10020</value>
</property>
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>192.168.100.10:19888</value>
</property>

sbin/mr-jobhistory-daemon.sh start historyserver
sbin/mr-jobhistory-daemon.sh stop historyserver

bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.3.jar wordcount /wordcountdemo/input /wordcountdemo/output1

http://192.168.100.10:19888/jobhistory

开启日志聚集
MapReduce是在各个机器上运行的,在运行过程中产生的日志存在于各个机器上,为了能够统一查看各个机器的运行日志,将日志集中存放在HDFS上,这个过程就是日志聚集。
Hadoop默认是不启用日志聚集的。在yarn-site.xml文件里配置启用日志聚集。

完全分布式安装

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值