特此声明:本内容所有详细内容一下面提供的附件形式出现,了解详细内容可查看附件
从4月28号搭建hadoop平台,到今天已经足足5天了,不断地改配置,敲命令,可以说真是人生一大快事吗?好了废话不多说,正式进入我的安装过程:
目录:
第一篇:Ubuntu13.1安装
第二篇:Sublime Text2安装
第三篇:hadoop+jdk1.8.0安装+ssh无密码登录
正文:
第一篇:
我用的是Ubuntu13.1,大家可以到我的云盘下载,下面是链接:
http://yunpan.cn/cjdvW5Abzap3I 访问密码 d13e
系统的安装我觉的是没什么说的必要的,给大家一个链接好了:
http://my.oschina.net/liangbo/blog/206553
这里我主要强调一点就是VMware Tools的安装,VMware Tolls可以全屏我们的虚拟机里的系统,而且可以实现本地电脑和虚拟机系统里的文件的自由拖拽,所以为了使用方便,这个工具还是安上的好,安装时,点击下图所示的选项:
我由于已经安装过了,所以显示重新安装,没安装过得童鞋,就是InstallVMware Tolls
不过,如果点击重新安装后,发现1分钟过去了,还没反应,不要再等了,检查你的镜像设置,如下图:
其中linux.iso是虚拟机自带的工具镜像,就存放在VMware的安装目录下,相应的windows系统还有windows.iso,好了,Ubuntu的安装就说到这里
第二篇:
在这之前,我需要提醒大家先做这样一件事,就是创建一个我们专用的用户,这个用户我们在后面会给他赋予一些特定的权限,包括在建立Hadoop集群时我们使用的用户名最好是一致的,这样会省去很多麻烦。
创建用户的方法有很多,我的过程如下:
然后,给新创建的用户赋予sudo权限,修改配置文件/etc/sudoers
#vi /etc/sudoers
做如下修改
保存退出
若修改时提示readonly,则进行权限修改,执行以下命令
#chmod 750 /etc/sudoers
然后我们在新创建的用户名下,执行以下步骤
Sublime Text2的安装参考以下博客:
http://www.linuxidc.com/Linux/2013-05/84228.htm
第三篇:
从Apache官网上下载Hadoop-1.2.1版本,Hadoop的安装模式分为三种,分别是:单机模式、伪分布模式及全分布模式。默认安装模式是单机模式。这里我们JDK和Hadoop一起进行
jdk下载链接:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
进去之后,选择Accept License Agreement,下载我们需要的版本
hadoop下载链接:http://apache.fayea.com/hadoop/common/hadoop-1.2.1/
下载Hadoop-1.2.1.tar.gz这一版本比较稳定
1) 解压TAR文件
$tar –zxvf hadoop-1.2.1.tar.gz
$tar -zxvf jdk-8u45-linux-i586-demos.tar.gz
2)将解压后的文件按如下目录存放(也可以自己定义)
$cp hadoop-1.2.1/opt/hadoop
$cp jdk1.8.0_40/usr/bin/java
3) 修改配置文件/etc/profile,还有/opt/hadoop/conf/hadoop-env.sh
在/etc/profile
在/opt/hadoop/conf/hadoop-env.sh
把# export JAVA_HOME=/usr/lib/j2sdk1.5-sun的#去掉
并改为 export JAVA_HOME=/usr/bin/java (根据自己的实际java路径来写)
4) 保存退出后,查看是否安装成功,执行下面的命令
5)hadoop安装
上面其实已经实现了单机安装,接下来我们要做的是Hadoop的伪分布式安装
伪分布式安装涉及如下几个文件,core-site.xml,hdfs-site.xml,mapred-site.xml,slaves,masters,它们都在/opt/hadoop/conf目录下
下面来看看他们都是怎么配置的?
core-site.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <!-- fs.default.name - 这是一个描述集群中NameNode结点的URI(包括协议、主机名称、端口号),集群里面的每一台机器都需要知道NameNode的地址。DataNode结点会先在NameNode上注册,这样它们的数据才可以被使用。独立的客户端程序通过这个URI跟DataNode交互,以取得文件的块列表。--> <property> <name>fs.default.name</name> <value>hdfs://Ubuntu1:9000</value> </property> <!--hadoop.tmp.dir是hadoop文件系统依赖的基础配置,很多路径都依赖它。如果hdfs-site.xml中不配置namenode和datanode的存放位置,默认就放在这个路径中--> <property> <name>hadoop.tmp.dir</name> <value>/hadoop/tmp/hadoop_tmp</value> </property> </configuration> |
hdfs-site.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>dfs.data.dir</name> <value>/hadoop/appdata/data</value> <description> Determines where on the local filesystem an DFS data node should store its blocks. If this is a comma-delimited list of directories,then data will be stored in all name directories, typically on different devices.Directories that do not exit are ignored. </description> </property> <property> <name>dfs.name.dir</name> <value>/hadoop/appdata/name</value> <description> Determines where on the local filesystem the DFS name node should store the name table.If this is a comma-delimited list of directories then the name table is replicated in all of the directories, for redundancy. </description> </property> <property> <name>dfs.replication</name> <value>1</value> <description> Default block replication. The actual number of replications can be specified when the file is created. The default is used if replication is not specified in create time. </description> </property> </configuration> |
mapred-site.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>mapred.job.tracker</name> <value>Ubuntu1:9001</value> <description> The host and port that the MapReduce job tracker runs at.If "local",then jobs are run in-process as a single map and reduce task. </description> </property> </configuration> |
masters
Ubuntu1
slaves
Ubuntu1
Ubuntu2
Ubuntu3
这就完成了伪分布式安装,这里我们也不需要看到什么结果,所以直接进行分布式安装
安装前,我们先列一个表格,把我们总体的思路表达一下
主机名 |
Hadoop角色 |
IP |
Hadoop jps命令集 |
Hadoop用户 |
Hadoop安装目录 |
Ubuntu1 |
Masters Slaves |
192.168.1.131 |
NameNode DataNode JobTracker TaskTracker SecondaryDameNode |
创建相同的用户组名:yzy3安装hadoop-2.1.1时使用yzy3用户,并且yzy3的文件夹归属也是“yzy3:yzy3” |
/opt/hadoop |
Ubuntu2 |
Slaves |
192.168.1.132 |
DataNode TaskTracker |
||
Ubuntu3 |
slaves |
192.168.1.133 |
DataNode TaskTracker |
||
Windows |
开发测试环境 |
安装JDK与Eclipse本身不需要安装Hadoop,但需要Hadoop安装包下面的JAR包 |
Ubuntu1,Ubuntu2,Ubuntu3分别为安装在虚拟机上的三台设备,这三台设备包括windows主机实现了互通,并建立了一个集群,接下来按照我们上面对Ubuntu1的配置,对Ubuntu2和Ubuntu3做相同的配置。
配置完成后,修改/etc/hosts文件,修改如下:
其他两台机器做同样的修改,改完之后,可以ping一下,看看能否互通,如果实现互通,则进行下面的步骤,那就是配置SSH免密码登录
配置前先确保我们开启了ssh服务,
查看是否开启:
$ps -e|grep ssh
如下所示,则已开启
否则,开启,开启ssh服务,敲如下命令:
$/etc/init.d/ssh start
当然三台机器要都开启ssh服务才可以,所以按上面的步骤将三台机器的ssh服务全部开启,
SSH免密码登录部分,进行如下配置,切记一定要在之前创建的用户模式下进行
$cd ~
$ssh-keygen -t rsa
然后一直按回车
以上步骤都是在Ubuntu1,Ubuntu2,Ubuntu3下共同做的
结束后,查看一下,提示:在上面生成密钥后,新建的文件夹.ssh为隐藏文件,需要用ll -a来查看,我们会发现在当前目录下已经包含了.ssh的目录
接下来主要在Ubuntu1下完成就可以了,Ubuntu1是我们的master节点
$cd .ssh
$ls
我们会看到在这个目录下有两个文件,分别是id_rsa , id_rsa.pub,接下来执行如下命令
$cp id_rsa.pub authorized_keys
$scp authorized_keysUbuntu2:/home/yzy1/.ssh
$scp authorized-keysUbuntu3:/home/yzy1/.ssh
这里由于是第一次登录,输入yes继续后,需要输入对方的密码,但以后就不需要了
我们可以来测试一下:
如上图所示,无密码登录成功
这里我唯一没有成功就是无法实现本机无密码登陆,后来查了很多资料,也实施了很多方案就是不管用,也不管了,反正就一个节点需要输密码,谁看到这篇博客,如果知道解决办法,就在评论里告诉我一声,先说声谢谢了。
接下来进行hadoop分布式安装的最后一步,就是启动hadoop,建立集群
在这之前,我们需要做一件事,回顾刚刚写的配置文件,core-site.xml中我们给了文件系统依赖的基础配置,其路径为/hadoop/tmp/hadoop_tmp所以我们要创建这个目录
#mkdir /hadoop/tmp/tmp
这里还需要在hadoop下创建一个文件夹,用于存放datanode和namenode两个节点,这两个节点是自动生成的,不需要创建
#cd /hadoop
#mkdir appdata
接下来格式化namenode
$hadoop namenode-format
当出现hadoop command not found 时,从新执行配置文件,我是每次重新开机后就要重新编译,后来,也没找到原因,不过每次不行的话,再执行下
$source /etc/profile就可以了。
接下来启动hadoop
$start-all.sh
启动后,$jps查看
如上图所示,集群建立成功
停止hadoop
$stop-all.sh