【原】Hadoop伪分布模式的安装
Hadoop伪分布模式的安装
【环境参数】
(1)Host OS:Win7 64bit
(2)IDE:Eclipse Version: Luna Service Release 2 (4.4.2)
(3)虚拟机:VMware 10
(4)Client OS:CentOS 6.4 32bit。
注意:
若是CentOS 64bit,则在启动hadoop时,会报出警告。
原因:Hadoop的本地库($HADOOP_HOME/lib/native/libhadoop.so.1.0.0)是在32 bit平台编译的,只支持32bit,并不支持64bit的,因此,若在64bit的CentOS上启动就会报出警告,如下所示。
INFO namenode.NameNode: createNameNode [-format] Java HotSpot(TM) Server VM warning: You have loaded library /home/hadoop/app/hadoop-2.4.1/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now. It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'. WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable |
(5)JDK版本:jdk-7u55-linux-i586.tar
(6)Hadoop Version:hadoop-2.4.1
(7)Hadoop集群配置参数
本集群共三个节点,一个是Namenode节点,剩余两个为Datanode节点。
7.1)Namenode节点参数
IP:192.168.234.8
主机名:namenode01
7.2)第一个DataNode节点参数
IP:192.168.234.11
主机名:datanode01
7.3)第二个DataNode节点参数
IP:192.168.234.12
主机名:datanode02
(8)本机在NAT连接(VMnet8)方式下,对应虚拟网络中的IP地址:192.168.234.1
【步骤描述】
0、安装步骤简述
Hadoop的伪分布式安装主要概括为以下步骤:
Linux环境的配置(IP, 主机名,hosts映射),安装配置JDK,安装配置hadoop,配置SSH免登陆等。
1、准备Linux环境(root用户操作)
1.1修改适配器设置
点击VMware快捷方式,右键打开文件所在位置 -> 双击vmnetcfg.exe -> VMnet1 host-only ->修改subnet ip 设置网段:192.168.234.255 子网掩码:255.255.255.0 -> apply -> ok
回到windows --> 打开网络和共享中心 -> 更改适配器设置 -> 右键VMnet8(NAT连接方式) -> 属性 -> 双击IPv4 -> 设置windows的IP:192.168.234.1 子网掩码:255.255.255.0 -> 点击确定
在虚拟软件上 --My Computer -> 选中虚拟机 -> 右键 -> settings -> network adapter -> host only -> ok
1.2关闭防火墙
查看防火墙状态
# service iptables status
关闭防火墙
# service iptables stop
查看防火墙开机启动状态
# chkconfig iptables --list
关闭防火墙开机启动
# chkconfig iptables off
1.3修改IP、主机名和hosts文件
1.3.1修改IP
两种方式:
第一种:通过Linux图形界面进行修改(强烈推荐)
进入Linux图形界面 -> 右键点击右上方的两个小电脑 -> 点击Edit connections -> 选中当前网络System eth0 -> 点击edit按钮 -> 选择IPv4 -> method选择为manual -> 点击add按钮 -> 添加IP:192.168.1.101 子网掩码:255.255.255.0 网关:192.168.1.1 -> apply
第二种:修改配置文件方式(屌丝程序猿专用)
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="static" ###
HWADDR="00:0C:29:3C:BF:E7"
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="ce22eeca-ecde-4536-8cc2-ef0dc36d4a8c"
IPADDR="192.168.234.8" ###
NETMASK="255.255.255.0" ###
GATEWAY="192.168.234.255" ###
1.3.2修改主机名
(1)编辑/etc/sysconfig/network文件
# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=namenode01 ###
(2)使用hostname
# hostname namenode01
(3)重新登录使得新主机名生效
# logout
注意:修改datanode01和datanode02的节点的主机名也是这个步骤。
1.3.3修改主机名和IP的映射关系
编辑/etc/hosts文件。
# vim /etc/hosts
192.168.234.8 namenode01 (Namenode的IP地址与域名的映射)
192.168.234.11 datanode01 (第一个Datanode的IP地址与域名的映射)
192.168.234.12 datanode02 (第二个Datanode的IP地址与域名的映射)
1.4创建hadoop用户、用户组以及赋予权限
(1)创建用户和组
创建hadoop用户组hadoopGroup
# groupadd hadoopGroup
创建hadoop用户,并为其指定用户组,用户家目录
# useradd hadoop -g hadoopGroup -d /home/hadoop
(2)为hadoop用户赋予sudo权限
编辑“/etc/sudoers”文件,添加相关命令。
Allow root to run any commands anywhere root ALL=(ALL) ALL hadoop ALL=(ALL) ALL |
1.4重启Linux
# shutdown -h now
2、安装JDK
2.1在【SecureSRT】中,按下“alt+p”后出现sftp窗口,然后put d:\xxx\yy\ll\jdk-7u_65-i585.tar.gz
2.2解压jdk
创建文件夹
# mkdir /home/hadoop/app
解压
# tar -zxvf jdk-7u55-linux-i586.tar.gz -C /home/hadoop/app
2.3将java添加到环境变量中
# vim /etc/profile
在文件最后添加
export JAVA_HOME=/home/hadoop/app/jdk1.7.0_55
export PATH=$PATH:$JAVA_HOME/bin
刷新配置
# source /etc/profile
3、安装hadoop2.4.1(hadoop用户操作)
注意01:在安装之前,要确保每台机器上都安装了JDK,配置了环境变量等。
注意02:将用户切换到hadoop用户。
注意03:hadoop2.x的配置文件$HADOOP_HOME/etc/hadoop伪分布式安装需要修改5个配置文件。
3.1配置hadoop(仅仅在单一节点配置,hadoop-server01)
第一个:hadoop-env.sh
vim hadoop-env.sh
#第27行
export JAVA_HOME=/usr/java/jdk1.7.0_65
注意:原来的配置为“export JAVA_HOME=${ JAVA_HOME }” ,是灵活的,在此要将其写死,因为原配置中,Hadoop可能会无法识别JAVA_HOME这个环境变量。
第二个:core-site.xml
core-site.xml
该文件中配置了Hadoop运行时的一些“公共的参数”。
<configuration> <!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 --> <property> <name>fs.defaultFS</name> <!-- 配置namenode --> <value>hdfs://namenode01:9000</value> </property> <!-- 指定hadoop运行时产生文件的存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/app/hadoop-2.4.1/tmp</value> </property> </configuration> |
解释1:
“hdfs://namenode01:9000”是一个URI,就像mysql的URI一样“jdbc:mysql://host:3306/db?if..”。
其中:
“hdfs://”和“jdbc:mysql://”这两个开头都是一个“Schema”,“hdfs://”是Hadoop的协议。
解释2:
“hdfs://namenode01:9000”,Schema后边的部分为“namenode的地址(或者域名、主机名)和端口号”。
namenode01:为Namenode节点主机的主机名。
解释3:
“hadoop.tmp.dir”为hadoop的工作目录。Hadoop运行过程中产生的中间目录都放置在该文件夹下。
具体的参数配置,请参考:
http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/core-default.xml
第三个:hdfs-site.xml
<!-- 指定HDFS副本的数量 --> <property> <name>dfs.replication</name> <value>1</value> </property> |
hdfs-site.xml:具体规定hadoop工作的一些细节。
dfs.replication:指定HDFS副本的数量。
第四个:mapred-site.xml (mv mapred-site.xml.template 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-site.xml
<!-- 指定YARN的老大(ResourceManager)的地址 --> <property> <name>yarn.resourcemanager.hostname</name> <value>namenode01</value> </property> <!-- reducer获取数据的方式 --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> |
解释:
(1) “yarn.nodemanager.aux-services”:规定一些“从节点”的行为。
第六个:配置” etc/hadoop/slave”文件
作用:决定Hadoop在启动时,是否自动去启动从节点“datanode”。
$ vim slaves
输入下列内容
namenode01
datanode01
datanode02
(1)将从节点“datanode”的信息写入到该文件中。
因为上边五个xml文件配置的都是namenode,或者yarn或者resourceManager等相关的信息,并没有配置与“从节点datanode”相关的信息,因此,在slaves中需要配置相关从节点的信息。
(2) 该文件不是必须配置的。
若配置该文件,则在Hadoop启动的时候,可以Hadoop会自动启动“从节点datanode”,若没有配置,则可以通过手工的形式启动“从节点”。
3.2将hadoop添加到环境变量
# vim /etc/proflie
export JAVA_HOME=/home/hadoop/app/jdk1.7.0_55
export HADOOP_HOME=/home/hadoop/app/hadoop-2.4.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
# source /etc/profile
3.3远程拷贝:将已经配置完的单一节点的Hadoop配置拷贝到另外两台节点中
(1)已配置好的节点:
namenode01
(2)未配置的节点:
datanode01
datanode02
(3)目标:
将“namenode01”节点中已经配置好的Hadoop文件(/home/hadoop/app/hadoop-2.4.1)拷贝到节点“datanode01”和节点“datanode02”所对应的目录下。
(4)命令
[hadoop@ namenode01 app]$ pwd
/home/hadoop/app/hadoop-2.4.1
[hadoop@ namenode01 app]$ ls
hadoop-2.4.1
[hadoop@ namenode01 hadoop]$
scp -r hadoop-2.4.1/ hadoop@datanode01:/home/hadoop/app
命令解析:
①scp:“Secure Copy”,一般用于“远程拷贝”。
②“hadoop@ datanode01”:表示拷贝到“datanode01”这台主机中的“hadoop用户”下目录“/home/hadoop/app”中去。
若没有“hadoop”这个字符串,则表示将文件拷贝到其他节点上的与“当前执行命令的用户名”相同的那个用户目录下。
拷贝之前注意:
注意01:在执行远程拷贝之前,在远程机器上,必须确保已经完成了初步的环境配置:
配置完IP,hostname,IP与域名的映射文件,hadoop用户和用户组,hadoop用户密码等,hadoop用户主目录的权限。
注意02:若主拷贝方节点与目标拷贝方节点上的两个用户之间的权限不一样,则无法完成系统拷贝。。
注意03:若另一台节点中没有“app”目录,则要先创建该目录,再执行远程拷贝。
3.4格式化namenode(是对namenode进行初始化)
切换到目录:$HADOOP_HOME/bin中,使用其中的命令“hdfs”。
注意:在使用能够分布式文件系统(即启动hadoop)之前,一定能够要先格式化。
# hdfs namenode -format
若出现下述命令,则说明hadoop文件系统的格式化已经成功了。
15/03/20 13:07:38 INFO common.Storage: Storage directory /app/ha doop-2.4.1/tmp/dfs/name has been successfully formatted. 15/03/20 13:07:39 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0 15/03/20 13:07:39 INFO util.ExitUtil: Exiting with status 0 15/03/20 13:07:39 INFO namenode.NameNode: SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down NameNode at namenode01/192.168.234.8 ************************************************************/ |
所谓格式化也就是在用户自己创建的“$HADOOP/tmp”目录下,写入一些初始的元数据文件。格式化完毕后,会在$HADOOP_HOME/tmp/current目录下,生成HDFS的相关数据文件,如下所示。
[hadoop@namenode01 current]$ pwd /home/hadoop/app/hadoop-2.4.1/tmp/dfs/name/current [hadoop@namenode01 current]$ ls edits_0000000000000000001-0000000000000000002 edits_0000000000000000003-0000000000000000005 fsimage_0000000000000000018 fsimage_0000000000000000018.md5 fsimage_0000000000000000020 fsimage_0000000000000000020.md5 seen_txid VERSION |
3.5启动hadoop
注意:在使用能够分布式文件系统之前,一定能够要先格式化。
先启动HDFS
sbin/start-dfs.sh
再启动YARN
sbin/start-yarn.sh
或者也可以通过如下Web界面来确认HDFS是否启动成功:
若没有启动“start-dfs.sh”,则该界面是不能够成功启动的。
http://192.168.234.8:50070 (HDFS管理界面,显示NameNode信息)
http:// 192.168.234.8:8088 (MR管理界面)
3.6验证是否启动成功
使用jps命令验证
27408 NameNode
28218 Jps
27643 SecondaryNameNode
28066 NodeManager
27803 ResourceManager (这个进程代表YARN,是一个分布式的资源管理系统)
27512 DataNode
4、配置ssh免登陆
4.1 生成ssh免登陆密钥
进入到我的home目录
cd ~/.ssh
ssh-keygen -t rsa (四个回车)
执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
4.2拷贝公钥
将公钥拷贝到要免密登陆的目标机器上和本机上。
①ssh-copy-id datanode01
②ssh-copy-id datanode02
③ssh-copy-id namenode01
注意:千万不能忘了将密钥拷贝到“本机”上,在此,本机的主机名为:namenode01,否则,该配置将不会成功。
【原】Hadoop伪分布模式的安装的更多相关文章
- hadoop伪分布模式安装
软件环境 操作系统 : OracleLinux-R6-U6 主机名: hadoop java: jdk1.7.0_75 hadoop: hadoop-2.4.1 环境搭建 1.软件安装 由于所需的软 ...
- Hadoop 伪分布模式安装
( 温馨提示:图片中有id有姓名,不要盗用哦,可参考流程,有问题评论区留言哦 ) 一.任务目标 1.了解Hadoop的3种运行模式 2.熟练掌握Hadoop伪分布模式安装流程 3.培养独立完成Hado ...
- Hadoop伪分布模式配置
本作品由Man_华创作,采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可.基于http://www.cnblogs.com/manhua/上的作品创作. 请先按照上一篇文章H ...
- Linux环境搭建Hadoop伪分布模式
Hadoop有三种分布模式:单机模式.伪分布.全分布模式,相比于其他两种,伪分布是最适合初学者开发学习使用的,可以了解Hadoop的运行原理,是最好的选择.接下来,就开始部署环境. 首先要安装好Lin ...
- Hadoop伪分布模式操作
http://blog.csdn.net/wangloveall/article/details/20195813 摘要:本文介绍Hadoop伪分布模式操作,适合于Hadoop学习.开发和调试. 关键 ...
- hadoop伪分布模式的配置和一些常用命令
大数据的发展历史 3V:volume.velocity.variety(结构化和非结构化数据).value(价值密度低) 大数据带来的技术挑战 存储容量不断增加 获取有价值的信息的难度:搜索.广告.推 ...
- Hadoop学习笔记(3)hadoop伪分布模式安装
为了学习这部分的功能,我们这里的linux都是使用root用户登录的.所以每个命令的前面都有一个#符号. 伪分布模式安装步骤: 关闭防火墙 修改ip地址 修改hostname 设置ssh自动登录 安装 ...
- 【Hadoop环境搭建】Centos6.8搭建hadoop伪分布模式
阅读目录 ~/.ssh/authorized_keys 把公钥加到用于认证的公钥文件中,authorized_keys是用于认证的公钥文件 方式2: (未测试,应该可用) 基于空口令创建新的SSH密钥 ...
- Hadoop伪分布模式配置部署
.实验环境说明 注意:本实验需要按照上一节单机模式部署后继续进行操作 1. 环境登录 无需密码自动登录,系统用户名 shiyanlou,密码 shiyanlou 2. 环境介绍 本实验环境采用带桌面的 ...
随机推荐
- Java里面instanceof怎么实现的
开始完全一头雾水呀,后面看了Java指令集的介绍,逐渐理解了. https://www.zhihu.com/question/21574535/answer/18998914 下面这个答案比较直白 你 ...
- hdu1052(田忌赛马 贪心)
好坑的一道题,不过确实是贪心的一道好题,想了好久一直无法解决平局的情况. 参考了别人的思路,然后结合了自己的想法,总算是想出来了. 这题有些步骤是必须要执行的,有四个步骤 一.当期状态田忌的最慢的马 ...
- 使用MFC中的AfxBeginThread创建多线程
创建一个基于对话框的工程,工程名为CreateThreadRect 在CreateThreadRect.cpp中增加一个ThreadProc函数,代码如下 工作者线程的函数必须是全局函数或静态 ...
- IOS中字符串操作
1.比较大小 - (NSComparisonResult)compare:(NSString *)string; 返回值NSComparisonResult有3种情况: NSOrderedAscend ...
- phpstorm10.0.1和webstorm11注册
webstorm11 for win 注册时选择“License server”输入“http://15.idea.lanyus.com/”点击“OK” phpstorm10.0.1 for win ...
- (转)CWnd与HWND的区别与转换
一.区别HWND是句柄,CWnd是MFC窗体类,CWnd中包含HWND句柄成员对象是m_hWnd.HWND是Windows系统中对所有窗口的一种标识,即窗口句柄.这是一个SDK概念. CWnd是M ...
- ecshop 改变sitemap.xml的位置
大家知道ECSHOP默认的sitemap.xml文件是放置在data文件夹中的,但是这不利于GOOGLE的抓取.我们必须把sitemap.xml文件放置在根目录下 在admin/sitemap.php ...
- T-SQL备忘(2):聚合函数运算和NULL
我们看表的数据: 而select AVG(Age) from Member1的结果为27.自己算一下就知道136/6 =22.666.而不是27,因此知道实际上Age为NULL的行没有参与运算.即: ...
- NetBeansRCP-添加/修改NetBeans的JVM启动参数
NetBeans运行的速度实在是不敢恭维.还好机器配置还可以,修改其JVM启动参数命令行,以期运行的更加顺畅. 那么如何修改NetBeans IDE的JVM参数呢? 1.到NetBeans IDE的安 ...
- JSTL获取list的大小,jstl获取list 的长度,EL表达式获取list的长度,EL表达式获取list大小
在jsp页面中不能通过${list.size}取列表长度,而是 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" pref ...