Hadoop学习笔记—22.Hadoop2.x环境搭建与配置
自从2015年花了2个多月时间把Hadoop1.x的学习教程学习了一遍,对Hadoop这个神奇的小象有了一个初步的了解,还对每次学习的内容进行了总结,也形成了我的一个博文系列《Hadoop学习笔记系列》。其实,早在2014年Hadoop2.x版本就已经开始流行了起来,并且已经成为了现在的主流。当然,还有一些非离线计算的框架如实时计算框架Storm,近实时计算框架Spark等等。相信了解Hadoop2.x的童鞋都应该知道2.x相较于1.x版本的更新应该不是一丁半点,最显著的体现在两点:
(1)HDFS的NameNode可以以集群的方式布署,增强了NameNodes的水平扩展能力和高可用性,分别是:HDFS Federation与HA;
(2)MapReduce将JobTracker中的资源管理及任务生命周期管理(包括定时触发及监控),拆分成两个独立的组件,并更名为YARN(Yet Another Resource Negotiator);
因此,我决定趁着现在又变成了单身狗(满满的都是伤感)的时机,把Hadoop2.x学习一下,也顺带分享一些学习笔记的文章与园友们分享。
至于Hadoop2.x到底相较于1.x有哪些改变,如果你不太知道,那么你可以先阅读一下这篇文章《Hadoop2的改进内容简介》大概了解一下,本篇内容将不会介绍这些,直接上环境搭建与配置的内容。
一、准备工作
(1)一台配置不错的电脑或笔记本(主要是内存、内存、内存,重要的事情说三遍)
(2)一个你使用过的虚拟机软件(可以是VMWare、Virtual Box或者其他的,我用的VMWare WorkStation)
(3)一个你使用过的SSH客户端软件(可以使XShell,XFtp、WinSCP等等,我用的XShell+XFtp)
(4)Hadoop2.4.1、JDK1.7的linux安装包(当然你也可以直接在线下载)
当然,体贴的我已为你准备了Hadoop2.4.1和JDK1.7的包,你可以通过这个链接下载:点我下载
二、伪分布式搭建
2.1 基础网络配置
安装完VMware Workstation之后,你的网络适配器会多出来两个,你要做的就是为多出来的第2个网卡设置静态IP地址,我这里是Ethernet 3 这里我们设置网关为192.168.22.1,为宿主机设置IP为192.168.22.2,也就是说我们的虚拟机必须要在192.168.22.x这个网段内。
然后我们再为虚拟机设置网络连接方式,选择VMNET8(NAT模式),如果你不知道NAT是什么意思,请百度一下。
2.2 为虚拟机安装Linux镜像
这里我们选择的是CentOS,你也可以选择其他的Linux发行版本。
2.3 设置静态IP地址
输入命令 setup -> 进入Device Configuration -> 输入service network restart重启网卡
另外,想要在宿主机访问虚拟机,需要开放端口,为了方便,我们直接将虚拟机的防火墙关闭:sudo service iptables stop
检查状态:sudo chkconfig iptables off
2.4 设置完全命令行模式启动
输入命令 sudo vi /etc/inittab -> 修改id:3 -> 输入reboot重启虚拟机
2.5 使用XShell代替VMware直接操作
这个时候你就可以使用XShell而不再需要在VMware里直接敲命令了,你会发现XShell用起来很爽!
2.6 将hadoop用户加入sudo用户组
由于linux下root用户的权限太大,经常使用root用户会很不安全,所以我们一般使用一个一般用户去操作,在用到需要高权限时使用sudo命令去执行。因此,我们这里需要将hadoop用户加入sudo用户组。
输入命令 su -> vi /etc/sudoers -> 找到这一行:root ALL=(ALL) ALL
然后在它下面一行加上一行:hadoop ALL=(ALL) ALL
最后保存退出。
2.7 更改主机名与IP地址映射关系
(1) sudo vi /etc/sysconfig/network -> hadoop-master.manulife -> reboot
(2) sudo vi /etc/hosts -> 加一行: 192.168.22.100 hadoop-master.manulife
2.8 建立一个专门放安装包的文件夹(非必要)
(1) rm -rf P* D* Music/ Videos/ Templates/
(2) mkdir app -> 安装后的地方
(3) mkdir local -> 放置安装包的地方
2.9 安装JDK
(1)上传jdk到虚拟机,这里借助SFtp软件
(2)解压jdk:tar -zvxf jdk -C ../app/
(3)设置环境变量:
sudo vi /etc/profile
export JAVA_HOME=/home/hadoop/app/jdk1.7.0_65
export PATH=$PATH:$JAVA_HOME/bin;
source /etc/profile
2.10 安装Hadoop
(1)上传jdk到虚拟机,这里借助SFtp软件
(2)解压jdk:tar -zvxf hadoop -C ../app/
(3)删除hadoop中share文件夹中的多余doc文件(非必要):rm -rf doc
(4)设置hadoop中etc文件夹中的一些重要配置文件:cd etc -> hadoop-env.sh,core-site.xml,hdfs-site.xml,yarn-site.xml,mapred-site.xml
hadoop-env.sh
vim hadoop-env.sh
#第27行
export JAVA_HOME=/home/hadoop/app/jdk
core-site.xml
<!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop-master.manulife:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/app/hadoop/tmp</value>
</property>
hdfs-site.xml
<!-- 指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
yarn-site.xml
<!-- 指定YARN的老大(ResourceManager)的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop-master.manulife</value>
</property>
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
mapred-site.xml (需要首先换个名字:mv mapred-site.xml.template mapred-site.xml)
<!-- 指定mr运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
(5)设置环境变量
sudo vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.7.0_65
export HADOOP_HOME=/itcast/hadoop-2.4.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbinsource /etc/profile
(6)格式化NameNode
hadoop namenode -format
(7)启动Hadoop两大核心功能:HDFS与YARN
首先编辑slaves配置文件(这里我们的主节点既是DataNode又是NameNode):vi slaves -> add hadoop-master.manulife
启动HDFS:sbin/start-dfs.sh
启动YARN:sbin/start-yarn.sh
验证是否启动:jps
(8)在宿主机中访问Hadoop Manager
首先将虚拟机的IP地址和主机名加入Windows Hosts:windows/system32/etc -> 加一行 : 192.168.22.100 hadoop-master.manulife
打开浏览器输入:http://hadoop-master.manulife:50070
2.11 HDFS简单测试
上传一个文件至HDFS : hadoop fs -put xxxx.tar.gz hdfs://hadoop-master.manulife:9000/
从HDFS下载一个文件 : hadoop fs -get hdfs://hadoop-master.manulife:9000/xxxx.tar.gz
2.12 MapReduce简单测试
这里直接运行一个hadoop自带的求圆周率的example:
(1)cd /home/hadoop/app/hadoop/share/hadoop/mapreduce/
(2)hadoop jar hadoop-mapreduce-examples-2.4.1.jar pi 5 5
2.13 SSH免密码登录
一般linux分布式集群中都会设置ssh免密码登录,这里我们首先将主节点设置为ssh免密码登录:
(1)ssh-keygen -t rsa
(2)cd .ssh -> cp id_rsa.pub authorized_keys
(3)ssh localhost
三、Java开发环境搭建
3.1 准备工作
3.2 使用Java API操作HDFS
3.3 简单测试
四、完全分布式搭建
Hadoop学习笔记—22.Hadoop2.x环境搭建与配置的更多相关文章
- Solr学习笔记之1、环境搭建
Solr学习笔记之1.环境搭建 一.下载相关安装包 1.JDK 2.Tomcat 3.Solr 此文所用软件包版本如下: 操作系统:Win7 64位 JDK:jdk-7u25-windows-i586 ...
- ESP32学习笔记(一) 环境搭建与下载
ESP32学习笔记(一) 环境搭建与下载 作者:Nevel 博客:nevel.cnblogs.com 转载请保留出处 前几天刚入手了ESP32模块,趁着放假有时间,我们先把ESP32的编译环境搭建好 ...
- Java学习笔记【一、环境搭建】
今天把java的学习重新拾起来,一方面是因为公司的项目需要用到大数据方面的东西,需要用java做语言 另一方面是原先使用的C#公司也在慢慢替换为java,为了以后路宽一些吧,技多不压身 此次的学习目标 ...
- Cocos2d-x 3.2 学习笔记(一)环境搭建
目前项目无事,时间比较充裕,因此来学习下cocos2dx,当然本人也是新手一个, 写此笔记做备忘和脚步. 最近3.2版本更新出來了!官方说这是自2.x分支以来修复了超过450个bug,3.2版本是目前 ...
- 【Lua学习笔记之:Lua环境搭建 Windows 不用 visual studio】
Lua 环境搭建 Windows 不用 visual studio 系统环境:Win7 64bit 联系方式:yexiaopeng1992@126.com 前言: 最近需要学习Unity3d游戏中的热 ...
- Lua 学习笔记(一)环境搭建
Lua是一个小巧的脚本语言.Lua由标准C编写而成,代码简洁,几乎在所有的操作系统和平台上都可以编译,运行. 主要讲一下mac和win下的环境搭建. 工具: 1.Sublime Text 2 ...
- nodejs学习笔记<一>安装及环境搭建
零零散散学了几天nodejs,进度一直停滞不前,今天沉下心来好好看了下nodejs的介绍和代码.自己也试着玩了下,算是有点入门了. 这里来做个学习笔记. ——————————————————————— ...
- Hadoop学习笔记—21.Hadoop2的改进内容简介
Hadoop2相比较于Hadoop1.x来说,HDFS的架构与MapReduce的都有较大的变化,且速度上和可用性上都有了很大的提高,Hadoop2中有两个重要的变更: (1)HDFS的NameNod ...
- 零基础Android学习笔记-01 安卓开发环境搭建
安卓开发环境搭建. 1.首先准备JDK,从官网找到JDK下载地址,原来做.NET不熟悉JAVA,干脆用最新的,下载了JDK 1.7的版本.原来装过1.5还要配置环境变量什么的.但1.7好像很给力,装好 ...
随机推荐
- 微信小程序开发心得
微信小程序也已出来有一段时间了,最近写了几款微信小程序项目,今天来说说感受. 首先开发一款微信小程序,最主要的就是针对于公司来运营的,因为,在申请appid(微信小程序ID号)时候,需要填写相关的公司 ...
- Solr_全文检索引擎系统
Solr介绍: Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务.Solr可以独立运行在Jetty.Tomcat等这些Servlet容器中. Solr ...
- C++随笔:.NET CoreCLR之GC探索(3)
有几天没写GC相关的文章了哈,今天我讲GC的方式是通过一个小的Sample来讲解,这个小的示例代码只有全部Build成功了才会有.地址为D:\coreclr2\coreclr\bin\obj\Wind ...
- 【转】为什么我们都理解错了HTTP中GET与POST的区别
GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数. 你可能自己 ...
- 数塔问题(DP算法)自底向上计算最大值
Input 输入数据首先包括一个整数C,表示测试实例的个数,每个测试实例的第一行是一个整数N(1 <= N <= 100),表示数塔的高度,接下来用N行数字表示数塔,其中第i行有个i个整数 ...
- mac下生成ssh keys 并上传github仓储
使用github仓储需要本机生成一个公钥key 添加到自己的git账户SSH keys中 mac 生成方法: 1. 打开终端 输入 ssh-keygen 然后系统提示输入文件保存位置等信息 ...
- linux的top命令参数详解
简介 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按 ...
- 前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)
今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供 ...
- nginx启动报错:/usr/local/nginx/sbin/nginx: error while loading shared libraries: libcrypto.so.1.1: cannot open shared object file: No such file or directory
查看依赖库:
- Spring MVC数据校验
在web应用程序中,为了防止客户端传来的数据引发程序异常,常常需要对 数据进行验证.输入验证分为客户端验证与服务器端验证.客户端验证主要通过JavaScript脚本进行,而服务器端验证则主要通过Jav ...