Ubuntu14.04安装完全分布式Hadoop1.2.1
一直想装hadoop集群,但总是没有时间,最近抽了三天时间下定决定装了一下,在我的wmware上虚拟了一台Ubuntu14.04,然后再复制了两台虚拟机,准备开始!!!!
基本参考 http://www.cnblogs.com/xia520pi/archive/2012/05/16/2503949.html
一. 了解hadoop:
对于Hadoop的集群来讲,可以分成两大类角色:Master和Salve。Hadoop分布式文件系统(HDFS,Hadoop Distributed Filesystem)和MapReduce(Google MapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构。
Hadoop集群角色:master,slave
Hadoop基础框架:HDFS,MapReduce
一个HDFS集群是由一个NameNode和若干个DataNode组成的,MapReduce框架是由一个单独运行在主节点上的JobTracker和运行在每个集群从节点的TaskTracker共同组成的。
master:JobTracker,NameNode
slave:TaskTracker,DataNode
JobTracker:监控它们的执行情况,并且重新执行之前的失败任务
TaskTracker:负责由主节点指派的任务
NameNode:作为主服务器,管理文件系统的命名空间和客户端对文件系统的访问操作
DataNode:管理存储的数据
二. 安装Hadoop集群(完全分布式)
我有三台虚拟机:
192.168.62.128 master.hadoop
192.168.62.129 slave1.hadoop
192.168.62.130 slave2.hadoop
1.网络配置
1.修改主机名(IP)
- $ sudo vim /etc/hostname
2.配置hosts文件(必须)
- $sudo vim /etc/hosts
"/etc/hosts"这个文件是用来配置主机将用的DNS服务器信息,是记载LAN内接续的各主机的对应[HostName和IP]用的。当用户在进行网络连接时,首先查找该文件,寻找对应主机名(或域名)对应的IP地址。在进行Hadoop集群配置中,需要在"/etc/hosts"文件中添加集群中所有机器的IP与主机名,这样Master与所有的Slave机器之间不仅可以通过IP进行通信,而且还可以通过主机名进行通信。所以在所有的机器上的"/etc/hosts"文件末尾中都要添加如下内容:
192.168.62.128 master.hadoop
192.168.62.129 slave1.hadoop
192.168.62.130 slave2.hadoop
3.用ping测试一下是否连通
- $ping slave1.hadoop
4.现在剩下的事儿就是在其余的Slave机器上进行相同的配置。然后进行测试。
1)JDK软件
下载地址:http://www.oracle.com/technetwork/java/javase/index.html
2)Hadoop软件
下载地址:http://hadoop.apache.org/common/releases.html
2.装JDK1.8.0_45
所有的机器上都要安装JDK,现在就先在Master服务器安装,然后其他服务器按照步骤重复进行即可。安装JDK以及配置环境变量,需要以"root"的身份进行。
1.在/usr下建立一个文件夹java,然后将解压后的jdk文件夹复制过来
2.将jdk文件夹的权限改为root
- $sudo chown -R root:root jdk1..0_45
3.编辑"/etc/profile"文件,在后面添加Java的"JAVA_HOME"、"CLASSPATH"以及"PATH"内容
- $sudo vim /etc/profile
在"/etc/profile"文件的尾部添加以下内容:
- # set java environment
- export JAVA_HOME=/usr/java/jdk1..0_45
- export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
- export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
4.保存并退出,执行下面命令使其配置立即生效
- $source profile
5.配置完毕并生效后,用下面命令判断是否成功
- $java -version
6.其它机器同样安装,用root权限
3.装Hadoop1.2.1(tar –zxvf 命令解压)
所有的机器上都要安装hadoop,现在就先在Master服务器安装,然后其他服务器按照步骤重复进行即可。安装和配置hadoop需要以"root"的身份进行。
1.把解压后的Hadoop1.2.1复制到/usr文件下,更名为hadoop
- #cp -r /home/xx/hadoop1.2.1 /usr
- #mv hadoop1.2.1 hadoop
2.把"/usr/hadoop"读权限分配给hadoop用户(非常重要)
- #chown -R xx:xx hadoop
3.最后在"/usr/hadoop"下面创建tmp文件夹,把Hadoop的安装路径添加到"/etc/profile"中,修改"/etc/profile"文件(配置java环境变量的文件),将以下语句添加到末尾,并使其有效:
- # set hadoop path
- export HADOOP_HOME=/usr/hadoop
- export PATH=$PATH:$HADOOP_HOME/bin
相关命名:
- #mkdir /usr/hadoop/tem
- #vim /etc/profile
- #source profile
source使profile配置立即生效!
4.配置hadoop(/usr/hadoop/conf)
配置 hadoop-env.sh,core-site.xml、hdfs-site.xml、mapred-site.xml,masters,slaves这六个文件。具体参见文章开头链接文章。
Hadoop配置文件在conf目录下,之前的版本的配置文件主要是Hadoop-default.xml和Hadoop-site.xml。由于Hadoop发展迅速,代码量急剧增加,代码开发分为了core,hdfs和map/reduce三部分,配置文件也被分成了三个core-site.xml、hdfs-site.xml、mapred-site.xml。core-site.xml和hdfs-site.xml是站在HDFS角度上配置文件;core-site.xml和mapred-site.xml是站在MapReduce角度上配置文件。
注意:配置slaves文件(Master主机特有)
配置master的slaves文件,里面需要完整的slave信息,例如:slave用户名@slave-IP
现在在Master机器上的Hadoop配置就结束了,剩下的就是配置Slave机器上的Hadoop。
5.用scp将master上的hadoop文件传给slave机器上,给相应机器上的用户加上读权限
- #chown -R hadoop:hadoop(用户名:用户组) hadoop(文件夹)
6.接着在"Slave1 .Hadoop"上修改"/etc/profile"文件(配置 java 环境变量的文件),将以下语句添加到末尾,并使其有效(source /etc/profile):
- # set hadoop environment
- export HADOOP_HOME=/usr/hadoop
- export PATH=$PATH:$HADOOP_HOME/bin
7.剩下的事儿就是照葫芦画瓢把剩余的几台Slave机器部署好
4.ssh无密码登录
SSH无密码原理
原理:Master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode | Tasktracker)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。当Master通过SSH连接Salve时,Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端Master公钥复制到Slave上。
1.安装ssh
- $sudo apt-get install ssh
2.Master机器上生成密码对
- $ssh-keygen -t rsa
这条命是生成其无密码密钥对,询问其保存路径时直接回车采用默认路径。生成的密钥对:id_rsa和id_rsa.pub,默认存储在"/home/xx/.ssh"目录下。
3.接着在Master节点上做如下配置,把id_rsa.pub追加到授权的key里面去
- $cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
4.在验证前,需要做两件事儿。第一件事儿是修改文件"authorized_keys"权限(权限的设置非常重要,因为不安全的设置安全设置,会让你不能使用RSA功能),另一件事儿是用root用户设置"/etc/ssh/sshd_config"的内容。使其无密码登录有效。
- $ chmod ~/.ssh/authorized_keys
- $ sudo vim /etc/ssh/sshd_config
修改SSH配置文件"/etc/ssh/sshd_config"的下列内容
- RSAAuthentication yes # 启用 RSA 认证
- PubkeyAuthentication yes # 启用公钥私钥配对认证方式
- AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)
设置完之后记得重启SSH服务,才能使刚才设置有效
- $ service ssh restart
退出root登录,使用hadoop普通用户验证是否成功
- $ ssh localhost
接下来的事儿是把公钥复制所有的Slave机器上
5.使用下面的命令格式进行复制公钥:
- $ sudo scp ~/.ssh/id_rsa.pub 远程用户名@远程服务器IP:~/
6.在"/home/hadoop/"下创建".ssh"文件夹,然后是修改文件夹".ssh"的用户权限,把他的权限修改为"700",用下面命令执行:
- $ mkdir ~/.ssh
- $ chmod ~/.ssh
备注:如果不进行,即使你按照前面的操作设置了"authorized_keys"权限,并配置了"/etc/ssh/sshd_config",还重启了ssh服务,在Master能用"ssh localhost"进行无密码登录,但是对Slave1.Hadoop进行登录仍然需要输入密码,就是因为".ssh"文件夹的权限设置不对。这个文件夹".ssh"在配置SSH无密码登录时系统自动生成时,权限自动为"700",如果是自己手动创建,它的组权限和其他权限都有,这样就会导致RSA无密码远程登录失败。
7.到目前为止slave1.hadoop的公钥也有了,文件夹".ssh"也有了,且权限也修改了。这一步就是把master.hadoop的公钥追加到slave1.hadoop的授权文件"authorized_keys"中去。使用下面命令进行追加并修改"authorized_keys"文件权限:
- $ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
- $ chmod ~/.ssh/authorized_keys
8.修改slave1"/etc/ssh/sshd_config"
具体分为两步:第1是修改配置文件;第2是重启SSH服务,具体步骤参考前面Master.Hadoop的"设置SSH配置"
9.用Master.Hadoop使用SSH无密码登录Slave1.Hadoop
- $ ssh slave1.hadoop
10.最后记得把slave1"/home/hadoop/"目录下的"id_rsa.pub"文件删除掉
到此为止,我们经过前5步已经实现了从"Master.Hadoop"到"Slave1.Hadoop"SSH无密码登录,下面就是重复上面的步骤把剩余的两台(Slave2.Hadoop和Slave3.Hadoop)Slave服务器进行配置。这样,我们就完成了"配置Master无密码登录所有的Slave服务器"。
11.和Master无密码登录所有Slave原理一样,就是把Slave的公钥追加到Master的".ssh"文件夹下的"authorized_keys"中,记得是追加(>>)。
12.首先创建"slave1.hadoop"自己的公钥和私钥,并把自己的公钥追加到"authorized_keys"文件中。用到的命令如下:
- $ ssh-keygen –t rsa
- $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
13.接着是用命令"scp"复制"slave1.hadoop"的公钥"id_rsa.pub"到"master.hadoop"的"/home/xx/"目录下,并追加到"master.hadoop"的"authorized_keys"中
- 在"Slave1.Hadoop"服务器的操作
$ sudo scp ~/.ssh/id_rsa.pub xx@192.168.62.128:~/
在"Master.Hadoop"服务器的操作
$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
然后删除掉刚才复制到master上的"id_rsa.pub"文件
14.最后是测试从"slave1.hadoop"到"master.hadoop"无密码登录
- $ ssh master.hadoop
至此"Master.Hadoop"与"Slave1.Hadoop"之间可以互相无密码登录了,剩下的就是按照上面的步骤把剩余的"Slave2.Hadoop"与"Master.Hadoop"之间建立起无密码登录。这样,Master能无密码验证登录每个Slave,每个Slave也能无密码验证登录到Master。
5.启动Hadoop
1.格式化HDFS文件系统
在"Master.Hadoop"上使用普通用户hadoop进行操作。(备注:只需一次,下次启动不再需要格式化,只需 start-all.sh)
- $ hadoop namenode -format
2.启动hadoop之前,关闭集群中每台机器的防火墙
- $ sudo ufw disable
3.进入/usr/hadoop/bin目录可以看到各个脚本 开启是start-all.sh 关闭是stop-all.sh
- $ start-all.sh
可以通过以下启动日志看出,首先启动namenode 接着启动datanode1,datanode2,…,然后启动secondarynamenode。再启动jobtracker,然后启动tasktracker1,tasktracker2,…。启动 hadoop成功后,在 Master 中的 tmp 文件夹中生成了 dfs 文件夹,在Slave 中的 tmp 文件夹中均生成了 dfs 文件夹和 mapred 文件夹。
4.验证hadoop
1)验证方法一:用"jps"命令
在Master上用 java自带的小工具jps查看进程。
依次可以看到JobTracker,NameNode,JPS,SecondaryNameNode进程号。
在Slave1上用jps查看进程。
依次可以看到TaskTracker,DataNode,JPS进程号。
2)验证方式二:用"hadoop dfsadmin -report"
最终起来的界面:在浏览器中输入master的ip地址:端口号
1)访问"http:192.168.62.128:50030"
2)访问"http:192.168.62.128:50070"
常见的一些安装问题请详见参考文章!!!
Ubuntu14.04安装完全分布式Hadoop1.2.1的更多相关文章
- Ubuntu14.04安装配置web/ftp/tftp/dns服务器
目录: 1.安装ftp服务器vsftpd --基于tcp,需要帐号密码 2.安装tftp服务器tftpd-hpa,tftp-hpa --udp 3.web服务器--使用Apache2+Mysql+PH ...
- Ubuntu14.04安装intel集显驱动
Ubuntu14.04安装intel集显驱动 标签(空格分隔): ubuntu linux 驱动安装 1.查看本机显卡型号 使用lspci命令来获取PCI接口硬件信息 o@o-pc:~$ lspci ...
- Ubuntu14.04安装中文输入法以及解决Gedit中文乱码问题
1 设置中文显示环境 1. 打开System Settings 2. 打开Personal-> Language Support. 会弹出如下对话框,提示你“语言支持没安装完整”. 点击“Rem ...
- Ubuntu14.04安装配置ndnSIM
Ubuntu14.04安装配置ndnSIM 预环境 Ubuntu14.04官方系统 请先使用sudo apt-get update更新一下源列表 安装步骤 安装boost-lib sudo apt-g ...
- Ubuntu14.04 安装QQ国际版wine-qqintl
Ubuntu14.04安装qq国际版方式: 首先下载,链接为: https://pan.baidu.com/s/1boPitVD 密码:jp1j 也可去Ubuntu中文的Kylin(优麒麟)官网下载 ...
- 一.ubuntu14.04安装、亮度设置、显卡设置等一体化讲解
一.ubuntu14.04安装 安装步骤很简单的,相信你只要知道并且决定安装ubuntu,你就不会在安装上有问题,下载网址 http://www.ithome.com/html/soft/81539. ...
- Ubuntu14.04安装samba
Ubuntu14.04安装samba 按照惯例,首先介绍Samba.Samba是在Linux系统上实现的SMB(Server Messages Block,信息服务块)协议的一款免费软件.它实现在局域 ...
- Ubuntu14.04安装有道词典
Ubuntu14.04安装有道词典之前要更新系统: sudo apt-get update sudo apt-get upgrade sudo apt-get dist-upgrade 在有道官网下载 ...
- ubuntu14.04 安装redis 2.8.9
ubuntu14.04安装前准备工作,为了保证安装顺利,请先执行apt-get update 然后安装make 和gcc(已安装的可忽略) apt-get install make apt-get i ...
随机推荐
- ios的自动转屏
在IOS6以前,设置转屏需要用到方法 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)x 在6以后,取代它 ...
- MongoDB自学笔记1----1.1 NoSQL是什么?
第一章 走进MongoDB 1.1NoSQL是什么? 1.1.1NoSQL简介 对于不了解NoSQL的人都会认为NoSQL为No SQL,即不是SQL.但是这种理解是错误的, ...
- 框架基础:ajax设计方案(三)---集成ajax上传技术
之前发布了ajax的通用解决方案,核心的ajax发布请求,以及集成了轮询.这次去外国网站逛逛,然后发现了ajax level2的上传文件,所以就有了把ajax的上传文件集成进去的想法,ajax方案的l ...
- make -j 多核并行编译 导致笔记本过热 自动关机保护
中午在装着CentOS的笔记本上把 Oneinstack 跑起来然后去上班了,本来等着下班回来用的,回来之后发现是关机状态,环境也没有装好. 查看日志,找不到相关信息,甚至还以为是被入侵了.又试了几遍 ...
- Python 调用shell
第一种,os.system("The command you want"). 这个调用相当直接,且是同步进行的,程序需要阻塞并等待返回.返回值是依赖于系统的,直接返回系统的调用返回 ...
- android两种方式获取AsyncTask返回值
获取AsyncTask返回值,在Activity中使用. 引用链接:https://www.oschina.net/code/snippet_725438_49858#72630 [1].[代码] [ ...
- 回家(洛谷 P1592)
模板题.. 传送门:codevs 1079 思路 :以 Z 为起点 直接跑一边SPFA , 看哪一头母牛距离Z点最近 , 最后找出Z 到 A~Y 的最短路 (因为仅有A~Z有奶牛) #include ...
- HDU 1728 逃离迷宫(DFS||BFS)
逃离迷宫 Problem Description 给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可 ...
- 常用的 css 样式 记录
1.font-style 属性指定文本的字体样式. 对应的值有: normal 默认值.浏览器显示一个标准的字体样式; italic 浏览器会显示一个斜体的字体样式; oblique 浏览器会显 ...
- Alyona and copybooks
题目连接 题意: 给 n,a,b,c四个数,n为已有的书的数目,问再买k本书所需花费最少是多少,(k+n)%4==0: 有三种套餐 第一种只有一本书,花费a 第二种有两本书,花费b, 第三种有三本书, ...