通用技术03--hadoop运用

简介

主要内容:Hadoop伪分布式配置、常用操作命令

前期准备

软件下载

jdk下载:
最好下载以前的稳定版本,此次使用的jdk版本为1.8

下载地址

hadoop下载:下载稳定版本, 此次使用Hadoop版本为2.7.7

下载地址

环境变量

#vim ~/.bash_profile

#Setting PATH for hadoop 2.7.7
export HADOOP_HOME=/Users/rimi/Desktop/hadoop-2.7.7
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

#Setting JAVA_HOME for jdk 1.8
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home

编辑保存完成后,执行命令: source .bash_profile

查看是否配置成功:echo $JAVA_HOME / echo $HADOOOP_HOME

#修改hadoop-env.sh配置文件(可不用)
#hadoop-2.7.7/etc/hadoop
#vim hadoop-env.sh

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home

hadoop伪分布式配置

hadoop/etc/hadoop/core-site

No.参数名默认值参数解释
1fs.defaultFSfile:///文件系统主机和端口
2io.file.buffer.size4096流文件的缓冲区大小
3hadoop.tmp.dir/tmp/hadoop-${user.name }临时文件夹
# vim core-site.xml
<configuration>
<!--指定namenode的地址(必须)-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://10.2.0.104</value>
</property>
<!--用来指定使用hadoop时产生文件的存放目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>file:/data/hadoop/hadoop-2.6.0/tmp</value>
</property>
<property>
<!--用来指定使用hadoop时的节点数(需要)-->
<name>dfs.replication</name>
<value>1</value>
</property>
<!--用来设置检查点备份日志的最长时间-->
<name>fs.checkpoint.period</name>
<value>3600</value>
</configuration>

hadoop/ect/hadoop/hdfs-site

No.参数名默认值参数解释
1dfs.namenode.secondary.http-address0.0.0.0:50090定义HDFS对应的HTTP服务器地址和端口
2dfs.namenode.name,dirfile://${hadoop.tmp.dir}/dfs/name定义DFS的名称节点在本地文件系统的位置
3dfs,datanode.data.dirfile://${hadoop.tmp.dir}/dfs/data定义DFS数据节点存储数据块时存储在本地文件系统的位置
4dfs.replication3缺省的块复制数量
5dfs.webhdfs.enabledtrue是否通过http协议读取hdfs文件,如果选是,则集群安全性较差
# vim hdfs-site.xml

<configuration>
<!--指定hdfs保存数据的副本数量-->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<!--指定hdfs中namenode的存储位置-->
<name>dfs.namenode.name.dir</name>
<value>file:///Users/rimi/Desktop/bigdata/namenode</value>
</property>
<property>
<!--指定hdfs中datanode的存储位置-->
<name>dfs.datanode.data.dir</name>
<value>file:///Users/rimi/Desktop/bigdata/datanode</value>
</property>
</configuration>

重新格式化: hdfs namenode -format

常用命令

1.查看集群上所有文件:

hdfs dfs -ls /

2.分别启动namenode/datanode:

hdfs –daemon start namenode / hdfs –daemon start datanode

3.查看该集群此ip下的文件:

hdfs dfs -ls hdfs://10.2.0.104/

4.创建文件夹:

hdfs dfs -mkdirs hdfs://10.2.0.104/text

5.logs 中可以查看日志 查看错误

cd hadoop-2.7.7/logs/

6.hadoop 2.* 版本可以网页查看所有namenode datanode

浏览器输入:10.2.0.104:50070

7.停止namenode/datanode

hdfs stop namenode(datanode)

8.对地址统一管理:

hadoop/etc/hadoop/

编辑workers: vim workers 注意:前面版本名字为slaves

9.停止和开始所有hadoop服务:

sbin/

stop-dfs.sh 停止

start-dfs.sh 开始

10.从集群下载文件

hdfs dfs -get hdfs://10.0.0.252:9000/data/hadoop-2.7.7.tar.gz ./ 下载

11.实现域名重定向

#sudo vim /etc/hosts

127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
0.0.0.0 1020104.local

12.配置Hadoop的主要5个文件

序号配置文件名配置对象主要内容
1hadoop-env.shhadoop运行环境用来定义hadoop运行环境相关的配置信息
2core-site.xml集群全局参数用于定义系统级别的参数,如HDFS URL 、Hadoop的临时目录等
3hdfs-site.xmlHDFS如名称节点和数据节点的存放位置、文件副本的个数、文件的读取权限等
4mapred-site.xmlMapreduce参数包括JobHistory Server 和应用程序参数两部分,如reduce任务的默认个数、任务所能够使用内存的默认上下限等
5yarn-site.xml集群资源管理系统参数配置ResourceManager ,nodeManager的通信端口,web监控端口等

分布式配置:

分配ip

# etc/hadoop/ 
# vim workers(或者slaves)

10.2.0.104 1020104.local namenode(存储的是文件属性) datanode
10.2.0.195 Mac-of-Jack.local datanode (存储文件数据)
10.2.0.166 rimideiMac-5.local datanode (存储文件数据)

yarn-site.xml

  • 重要参数

    No.参数名默认值参数解释
    1yarn.resourcemanager.address0.0.0.0:8032ResourceManager(以下简称RM) 提供客户端访问的地址。客户端通过该地址向RM提交应用程序,杀死应用程序等
    2yarn.resourcemanager.scheduler.address0.0.0.0:8030RM提供给ApplicationMaster的访问地址。ApplicationMaster同通过该地址向RM申请资源、释放资源等
    3yarn,resoucemanager.resource.resource-tracker.address0.0.0.0:8031RM提供NodeManager的地址。NodeManager通过该地址向RM汇报心跳,领取任务等
    4yarn.resourcemanager.admin.address0.0.0.0:8033RM提供管理员的访问地址。管理员通过该地址向RM发送管理命令等
    5yarn.resourcemanager.webapp.address0.0.0.0:8088RM对web服务提供地址。用户可通过该地址在浏览器中查看集群各类信息
    6yarn.nodemanager.aux-services通过该配置项,用户可以自定义一些服务,例如Map-Reduce的shuffle功能就是采用这种方式实现的,这样就可以在NodeManager上扩展自己的服务
>注意:不同版本配置可能不同
#hadoop 3.1
#etc/hadoop
#vim yarn-site.xml

<property>
<name>yarn.scheduler.capacity.root.queues</name>
<value>a,b,c</value>
<description>The queues at the this level (root is the root queue).
</description>
</property>

<property>
<name>yarn.scheduler.capacity.root.a.queues</name>
<value>a1,a2</value>
<description>The queues at the this level (root is the root queue).
</description>
</property>

<property>
<name>yarn.scheduler.capacity.root.b.queues</name>
<value>b1,b2,b3</value>
<description>The queues at the this level (root is the root queue).
</description>
</property>

#hadoop 2.7

<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
  • mapred-site.xml

    注意hadoop 2.7 需要将 mapre-site.xml.template 重新命名为 mapred-site.xml

    #etc/hadoop
    #mv mapre-site.xml.template mapred-site.xml
    #vim mapred-site.xml

    <configuration>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>>
    </configuration>
  • mapred-site.xml 重要参数说明

    No.参数名默认值参数解释
    1mapreduce.framework.namelocal取值local、classic或yarn其中之一,如果不是yarn,则不会使用yarn集群来实现资源的分配
    2mapreduce.jobhistory.address0.0.0.0:10020定义历史服务器的地址和端口,通过历史服务器查看已经运行完的Mapreduce作业记录
    3mapreduce.jobhistory.webapp.address0.0.0.0:19888定义历史服务器web应用访问的地址和端口
  • 启动资源管理器:

    yarn –daemon start resourcemanager

    hadoop 2.7版本:sbin/yarn-daemon.sh start resourcemanager

完整步骤(错误解决/127 99999)

  • jdk环境变量

  • Hadoop环境变量

    # Setting PATH for Python 3.7
    # The original version is saved in .bash_profile.pysave
    PATH="/Library/Frameworks/Python.framework/Versions/3.7/bin:${PATH}"
    export PATH=/usr/local/bin:$PATH
    export PATH=$PATH:Desktop/bs4/chrom/chromedriver

    export #Setting PATH for hadoop 2.7.7
    export HADOOP_HOME=/Users/rimi/Desktop/hadoop-2.7.7
    export PATH=$PATH:$HADOOP_HOME/bin
    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home
  • 停止所有:sbin/stop-all.sh

  • 开始所有:sbin/start-all.sh

  • 查看是否存在进程:jps 存在则杀死该进程 kill 6163

  • 脚本启动:sbin/hadoop-daemon.sh –script hdfs start namenode(datanode)

  • 查看是否启动:jps

  • 开启resourcemanager:sbin/yarn-daemon.sh start resourcemanager(nodemanager) 重复7

  • hdfs dfs -mkdirs hdfs://10.2.0.104/text hdfs创建文件

  • 推送数据到hdfs:hdfs dfs -put 本地路径 上传路径

  • hdfs dfs -ls hdfs://10.2.0.104/

  • 执行某一个分析

    hadoop jar $HADOOP_HOME/share/hadoop/tools/lib/hadoop-streaming-2.7.7.jar -input hdfs://10.2.0.104/mewas/data.txt -mapper ~/Desktop/mewas/map.py -reducer ~/Desktop/mevas/reduce.py -output /data-output

    出现错误: builtin-java classes where applicable

    解释:文件必须是可执行的 并且数据在hdfs中存在(ls -l查看文件权限)

    解决:本地检查map运行是否正确:运行: cat data.txt | python ./map.py

    在.py中加入注释:#!/usr/bin/env python 表面这是一个python文件使用python编码解释器

  • 数据处理方法编写:map/reduce (详细请看 : MapReduce Tutorial)

  • 若运行过12则需要删除output再重新运行:

    hdfs dfs -rm -r /data-output

    hadoop jar $HADOOP_HOME/share/hadoop/tools/lib/hadoop-streaming-2.7.7.jar -input hdfs://10.2.0.104/mewas/data.txt -mapper ~/Desktop/mewas/map.py -reducer ~/Desktop/mevas/reduce.py -output /data-output

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值