【一】、搭建Hadoop环境----本地、伪分布式
## 前期准备
1.搭建Hadoop环境需要Java的开发环境,所以需要先在LInux上安装java
2.将 jdk1.7.tar.gz 和hadoop 通过工具上传到Linux服务器上
3.解压jdk 命令:tar -zxvf jdk-xxxx-xxx.tar.gz -C 目标文件目录中
4.使用root 用户 或者使用 sudo 编辑修改 vi /etc/profile
5.在文件的最后面添加上
export JAVA_HOME=xxxxxx[解压的目录]
export PATH=PATH:JAVA_HOME/bin
6.使用命令 : source /etc/profile 生效 ,检验是否安装成功命令 : java -version
## 开始搭建
1.首先解压Hadoop 2.5 到指定目录下,修改 /hadoop-2.5.0/etc/hadoop中的hadoop-env.sh中的JAVA_HOME
将export JAVA_HOME=${JAVA_HOME}
修改成 export JAVA_HOME=/xxxx/yyy/jdk1.7.0 (后面这个文件目录,可以使用 echo $JAVA_HOME来查看出 )
2.Hadoop 的测试开发环境有3种
1.Standalone Operation (标准版,单机启动)
2.Psedo-Distributed Operation (伪分布式启动)
3.Fully-Distributed Opeartion (完全分布式启动)
1).首先是Standalone Operation 测试
此时目录在hadoop2.5的解压目录中
$ mkdir input
$ cp etc/hadoop/*.xml input
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.2.jar grep input output 'dfs[a-z.]+'
$ cat output/*
2)Pseudo-Distributed Opeartion (需要进行配置文件)
2.1)首先配置 :(hadoop解压目录下的)/etc/hadoop/core-site.xml中的配置文件
这个是配置NameNode所在的机器,在value中,以前通常是9000,但是在Hadoop 2.0以后通常配置的 端口是 8020 而localhost也被换成主机名(查看主机名命令:hostname)
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop-senior.zuoyan.com:8020</value>
</property>
</configuration>
在这个文件中还需要覆盖一下默认的配置,然临时文件存放到我么指定的目录
在hadoop的解压目录下,创建mkdir data ===>cd data ===>mkdir tmp
<!--configurate Temporary date storage location--> <property> <name>hadoop.tmp.dir</name> <value>/opt/modules/hadoop-2.5.0/data/tmp</value> </property>
这个文件配置完毕,下面配置 hdfs-site.xml
这是配置文件的备份数量,因为是伪分布式,所以备份数量为1就可以
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
注:NameNode 存放的是元数据
第一次 对HDFS进行格式化 在hadoop的主目录中
bin/hdfs namenode -format
然后启动namenode :sbin/hadoop-daemon.sh start namenode
接着启动datanode :sbin/hadoop-daemon.sh start datanode
查看一下进程 : jps
*(有的人可能启动失败,可以去安装的主目录看一下日志:log)
http://hadoop-senior.zuoyan.com:50070 (hdfs 的web界面---Ip+50070(默认端口))
创建文件目录: bin/hdfs dfs -mkdir -p /usr/zuoyan
查看文件目录列表 : bin/hdfs dfs -ls / 或者循环查看问价目录列表 bin/hdfs dfs -ls -R /
删除文件目录 : bin/hdfs dfs -rm -r -f /xxx
上传文件: bin/hdfs dfs -put [本地文件目录] [HDFS上的文件目录]
例如:bin/hdfs dfs -put wcinput/wc.input /user/zuoyan/mapreduce/wordcount/input
效果:
使用命令查看文件列表效果:
使用命令查看文件内容 : bin/hdfs dfs -cat /XXXX/XXX
例:bin/hdfs dfs -cat /user/zuoyan/mapreduce/wordcount/input/wc.input
使用 mapreduce 统计单词出现的次数
命令: bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount /user/zuoyan/mapreduce/wordcount/input/ /user/zuoyan/mapreduce/wordcount/output
使用后的效果:
上图就是输出的效果!
两种执行效果是一样的,不同的是一个是在本地上运行的,一个是在HDFS文件系统上运行的!
下面配置yarn-env.sh(所在的目录为:hadoop安装路径 /etc/hadoop)
配置JAVA_HOME (可以不进行配置,为了保险起见,可以配置上)
# some Java parameters export JAVA_HOME=/home/zuoyan/Softwares/jdk1.7.0_79
然后配置 yarn-site.xml (所在文件目录为:hadoop安装路径 /etc/hadoop)
<configuration> <!--config the resourcemanager locatin computer ip--> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop-senior.zuoyan.com</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
讲一个英语单词:slaves(奴隶,或者是从节点的意思)
在slaves 中配置一下IP地址 :hadoop-senior.zuoyan.com
下面就是yarn 初始化
1.启动resourcemanager sbin/yarn-daemon.sh start resourcemanager
2.启动 nodemanager sbin/yarn-daemon.sh start nodemanager
使用jps看一下系统进程
可以看到 resourceManger 和 NodeManager已经成功的启动起来了!
3.yarn也有一个自己默认的WEB页面 默认的端口号是8088
例如:http://hadoop-senior.zuoyan.com:8088 访问效果如下图
下面配置 mapreduce-site.xml 和mapreduce-env.sh
就是更改一下JAVA_HOME 的文件地址
首先找到 mapred-site.xml.template 更改文件名称 去掉后面的.template
mapred-site.xml 然后配置这个里面的文件
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
这次执行 使用yarn 不在使用本地 所以速度会慢一点
使用的命令 (使用之前要记得删除output 目录,不然会报错 )
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar wordcount /user/zuoyan/mapreduce/wordcount/input/ /user/zuoyan/mapreduce/wordcount/output
yarn执行时候的效果
上面统计单词出现个数的是
第一次演示的是 mapreduce 程序 运行在本机 (本地效果)
第二次演示的是mapreduce 程序 运行在yarn上的效果 (伪分布式效果)
- spring设置全局异常处理器
- discuz论坛apache日志hadoop大数据分析项目:hive以及hbase是如何入库以及代码实现
- 【Golang语言社区】前端编程- 从零开始开发一款H5小游戏(一) 重温canvas的基础用法
- 今天聊聊分布式锁 No.86
- 【JS游戏编程基础】关于js里的this关键字的理解
- 【算法】随机森林算法
- 【Golang语言社区--H5编程】smoke.js
- GO语言标准库概览
- Golang测试技术
- 安装Python时遇到如下问题,解决方案
- spring使用Email邮件系统
- discuz论坛apache日志hadoop大数据分析项目:清洗数据核心功能解说及代码实现
- mybatis 对于基本类型数据传值的问题
- Guava------------Cache使用方法
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 恕我直言你可能真的不会java第11篇-Stream API终端操作
- Python+selenium 自动化-滚动的使用方法,如何滚动到元素的位置
- 恕我直言你可能真的不会java第10篇-集合元素归约
- Python+selenium 自动化-模拟键盘输入、点击操作,如何查看所支持的全部键位名称
- Uber为什么放弃Postgres选择迁移到MySQL?
- BAT 批处理命令 - 文件批量复制、克隆功能实例演示
- 【35期】谈谈你对Java线程之间通信方式的理解
- mac 技术篇-修改hosts文件,hosts文件位置
- 一行能装逼的 JavaScript 代码
- python 技术篇-时间戳的获取,记录程序处理时间
- 基于SpringBoot AOP面向切面编程实现Redis分布式锁
- Python+Selenium 技巧篇-svg标签内元素的xpath定位方式
- 小书MybatisPlus第5篇-Active Record模式精讲
- Python 语法问题-module ‘pip._internal‘ has no attribute ‘pep425tags‘. 原因及解决办法,32位、64位查看pip支持万能方法
- 总在说 Spring Boot 内置了 Tomcat 启动,那它的原理你说的清楚吗?