vmware10上三台虚拟机的Hadoop2.5.1集群搭建
由于官方版本的Hadoop是32位,若在64位Linux上安装,则必须先重新在64位环境下编译Hadoop源代码。本环境采用编译后的hadoop2.5.1 。
安装参考博客:
1 http://www.micmiu.com/bigdata/hadoop/hadoop2x-cluster-setup/
2 http://f.dataguru.cn/thread-18125-1-1.html
3 http://blog.sina.com.cn/s/blog_611317b40100t5od.html
一 、安装条件
环境搭建:
物理机win7
虚拟机vmware10+3台ubuntu12.04 64位(可以配置好一台然后完全复制另外两台)
虚拟机采用NAT模式上网,
{ 在Virtual Network Editor中将Subnet IP设为192.168.23.0
为虚拟机配置静态Ip
autho eht0
iface eth0 inet static
address 192.168.23.5
gateway 192.168.23.2
netmask 255.255.255.0
network 192.168.23.0
broadcast 192.168.23.255
配置虚拟机DNS
在/etc/resolvconf/resolv.conf.d/base以及/etc/resolv.conf中加入
nameserver 8.8.8.8
虚拟机端口映射
将虚拟机的22(ssh)端口应射成主机的8841端口,以后ssh远程访问虚拟机都用主机的端口访问
Sudo vi /etc/vmware/vmnet8/nat/nat.conf
在[incomingtcp]下加入
8421=192.168.23.5:22
需要注意的是再加入端口之前要查看端口是否占用
Netstat –ap|grep 8421
} 这部分我安装时没有关心。
二、环境准备
安装好虚拟机,为方便设置: 用户名:hadoop 主机名分别为:master 、slave1、slave2
配置各台虚拟机的ip:
Ipconfig :查看各个虚拟机的ip,没台机器就可以取这个ip。
hostname |
IP |
用途 |
master |
192.168.164.133 |
NameNode/ResouceManager |
Slave1 |
192.168.164.134 |
DataNode/NodeManager |
slave2 |
192.168.164.135 |
DataNode/NodeManager |
ps:如果是虚拟机可以把环境配置好后,copy多个实例即可,需要注意修改hostname
1 vi /etc/hosts 添加如下内容:
192.168.164.133 master
192.168.164.134 slave1
192.168.164.135 slave2
这里可能hosts和hostname是只读权限
给只读文件添加权限:
sudo chmod a+rwx /etc/hosts
sudo chmod a+rwx /etc/hostname
2 修改各台主机的主机名:
Vi /etc/hostname
3 3台主机分别更新: sudo apt-get update
3台主机分别关闭防火墙:sudo ufw disable
(将hadoop用户添加root权限: sudo gpasswd -a hadoop root )
给hadoop用户设置无密码sudo权限:
Chmod u+w /etc/sudoers
编辑增加:
Hadoop ALL=(root)NOPASSWD:ALL
Chmod u-w /etc/sudoers
测试是否成功:sudo ifconfig
4 配置jdk
在3台:在/usr目录下新建setup目录,用于安装jdk和hadoop
解压jdk到setup目录
加压到指定目录: tar zxvf 源文件 –C 指定目录
tar zxvf jdk1.x---
重命名为jdk1.7 : mv jdk-1.7.x/ jdk1.7/
配置jdk的环境变量:
gedit /etc/profile
添加:红色部分为自己的jdk目录
#set Java environment
JAVA_HOME=/usr/setup/jdk1.7
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH JAVA_HOME CLASSPATH
验证:Java -version
Jdk配置完毕。(这一步完成后可以复制虚拟机)复制后注意配置主机名。
配置ssh互信(无密码登陆)
"公私钥"认证方式简单的解释:首先在客户端上创建一对公私钥 (公钥文件:~/.ssh/id_rsa.pub; 私钥文件:~/.ssh/id_rsa)。然后把公钥放到服务器上(~/.ssh/authorized_keys), 自己保留好私钥.在使用ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配.如果匹配成功就可以登录了。
1 安装ssh:
3台主机分别:sudo apt-get install ssh
然后 :ssh-keygen -t rsa
一直回车 选择是选 y
回到master主机上,使用跨主机的管道和重定向将slave1,slave2主机上的公钥id_rsa.pub添加到 master上的authorized_keys文件中。
三台主机上分别:
cd ~/.ssh/
cat id_rsa.pub >authorized_keys
在master上:ssh slave1 cat ~/.ssh/id_rsa.pub && ssh slave2 cat ~/.ssh/id_rsa.pub
添加到
authorized_keys,
然后复制authorized_keys到slave1 和slave2中:
scp authorized_keys hadoop@slave1:~/.ssh/
scp authorized_keys hadoop@slave2:~/.ssh/
(或者 :在master上执行:
$cat ~/.ssh/id_rsa.pub | ssh 远程用户名@远程服务器ip 'cat >> ~/.ssh/authorized_keys'
)
测试:ssh slave1
Ssh slave2
第一次需要密码,后续ssh时可以实现无密码登陆。
hadoop安装配置
1 下载hadoop,http://apache.fayea.com/apache-mirror/hadoop/common/
选择hadoop-2.2.0.tar.gz
32位环境下不用编译。复制到setup目录(这部分看个人习惯)解压
tar zxvf hadoop-2.2.0.tar.gz
mv hadoop-2.2.0 hadoop
2 配置hadoop的环境变量
vi /etc/profile
添加如下内容:
# set java environment
export JAVA_HOME=/usr/setup/jdk1.7
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
# set Hadoop environment
export HADOOP_PREFIX="/usr/setup/hadoop"
export PATH=$PATH:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin
export HADOOP_COMMON_HOME=${HADOOP_PREFIX}
export HADOOP_HDFS_HOME=${HADOOP_PREFIX}
export HADOOP_MAPRED_HOME=${HADOOP_PREFIX}
export HADOOP_YARN_HOME=${HADOOP_PREFIX}
使环境变量生效
$source /etc/profile
3 编辑 <HADOOP_HOME>/etc/hadoop/hadoop-env.sh 指定java路径
修改JAVA_HOME的配置:
export JAVA_HOME=/usr/setup/jdk1.7
4 编辑 <HADOOP_HOME>/etc/hadoop/yarn-env.sh
修改JAVA_HOME的配置:
export JAVA_HOME=/usr/setup/jdk1.7
5编辑 <HADOOP_HOME>/etc/hadoop/core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value> //指定主机和端口号,master可以改成主机ip当然
<description>The name of the default file system.</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<!-- 注意创建相关的目录结构 -->
<value>/usr/setup/hadoop/temp</value>
<description>A base for other temporary directories.</description>
</property>
//创建临时文件目录,在hadoop目录下新建temp目录
6 编辑<HADOOP_HOME>/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<!-- 值需要与实际的DataNode节点数要一致,本文为2 -->
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<!-- 注意创建相关的目录结构 -->
<value>file:/usr/setup/hadoop/dfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<!-- 注意创建相关的目录结构 -->
<value>file:/usr/setup/hadoop/dfs/data</value>
</property>
</configuration>
//hadoop根目录下新建dfs目录,在dfs下新建data和name目录
7编辑<HADOOP_HOME>/etc/hadoop/yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<!-- resourcemanager hostname或ip地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
</configuration>
//三台机器上配置是一样的
8编辑 <HADOOP_HOME/etc/hadoop/mapred-site.xml
默认没有mapred-site.xml文件,copy mapred-site.xml.template 一份为 mapred-site.xml即可
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<final>true</final>
</property>
</configuration>
9编辑 <HADOOP_HOME>/etc/hadoop/slaves
添加:
slave1
slave2
配置好hadoop后可以通过scp –r hadoop hadoop@IP 复制hadoop这个目录到指定节点上
启动和测试
1 启动Hadoop
1.1、第一次启动需要在master执行format :hdfs namenode -format
1.2、在master执行 start-dfs.sh
在master验证启动进程:
[hadoop@master ~]$ jps
在slavex验证启动进程:
hadoop@slave1 ~$ jps
1.3、在Master.Hadoop 执行 start-yarn.sh
在master验证启动进程:
在slavex验证启动进程:
hadoop@slave1 ~$ jps
2 演示
(这部分参考http://www.micmiu.com/bigdata/hadoop/hadoop2x-cluster-setup/)
2.1 演示hdfs 一些常用命令,为wordcount演示做准备
hdfs dfs -ls /
hdfs dfs -mkdir /user
hdfs dfs -mkdir -p /user/test/wordcount/in
hdfs dfs -ls /user/test/wordcount
2.2、本地(即home/下面)创建三个文件 test1.txt、test2.txt、test3.txt, 分别写入如下内容:
test1:
hi baixl welcome to hadoop
more see hadoop
test2:
hi baixl welcome to bigdata
more see hadoop
test3:
hi baixl welcome to spark
more see hadoop
把 test打头的三个文件上传到hdfs:
[hadoop@Master ~]$ hdfs dfs -put test*.txt /user/test/wordcount/in
[hadoop@Master ~]$ hdfs dfs -ls /user/test/wordcount/in
2.3、然后cd 切换到Hadoop的根目录下执行:
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.1.jar wordcount /user/test/wordcount/in /user/test/wordcount/out
到此 wordcount的job已经执行完成,执行如下命令可以查看刚才job的执行结果:类似如下:
[hadoop@Master hadoop]$ hdfs dfs -ls /user/test/wordcount/out
[hadoop@Master hadoop]$ hdfs dfs -cat /user/test/wordcount/out/part-r-00000
注意:当重启hdfs后需要删除hdfs上缓存的文件
安装过程中由于已经在hdfs上上传了文件,当重启在 hdfs namenode –format时,后,会提示无法上传文件,此时需要删除hdfs已经存在的副本:
在master上删除dfs上name目录下的current目录: rm –rf current/
在slave上删除dfs上的整个data目录:rm –rf data/
- 远程访问hadoop集群:masterIP:50070
vmware10上三台虚拟机的Hadoop2.5.1集群搭建的更多相关文章
- 懒人记录 Hadoop2.7.1 集群搭建过程
懒人记录 Hadoop2.7.1 集群搭建过程 2016-07-02 13:15:45 总结 除了配置hosts ,和免密码互连之外,先在一台机器上装好所有东西 配置好之后,拷贝虚拟机,配置hosts ...
- hadoop2.8 ha 集群搭建
简介: 最近在看hadoop的一些知识,下面搭建一个ha (高可用)的hadoop完整分布式集群: hadoop的单机,伪分布式,分布式安装 hadoop2.8 集群 1 (伪分布式搭建 hadoop ...
- hadoop2.7.2集群搭建
hadoop2.7.2集群搭建 1.修改hadoop中的配置文件 进入/usr/local/src/hadoop-2.7.2/etc/hadoop目录,修改hadoop-env.sh,core-sit ...
- hadoop2.6.0集群搭建
p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-s ...
- Hadoop2.0 HA集群搭建步骤
上一次搭建的Hadoop是一个伪分布式的,这次我们做一个用于个人的Hadoop集群(希望对大家搭建集群有所帮助): 集群节点分配: Park01 Zookeeper NameNode (active) ...
- 虚拟机下 solr7.1 cloud 集群搭建 (手动解压和官方脚本两种方式)
准备工作: vmware workstation 12,OS使用的是ubuntu16.04,三台虚拟机搭建一个solr集群,zookeeper共用这三台虚拟机组成zookeeper集群. zookee ...
- Hadoop2.6.5集群搭建
一. Hadoop的分布式模型 Hadoop通常有三种运行模式:本地(独立)模式.伪分布式(Pseudo-distributed)模式和完全分布式(Fully distributed)模式.安装完成后 ...
- centos下hadoop2.6.0集群搭建详细过程
一 .centos集群环境配置 1.创建一个namenode节点,5个datanode节点 主机名 IP namenodezsw 192.168.129.158 datanode1zsw 192.16 ...
- hadoop2.4.1集群搭建
准备Linux环境 修改主机名: $ vim /etc/sysconfig/network NETWORKING=yes HOSTNAME=hadoop001 修改IP: # vim /etc/sys ...
随机推荐
- python-cookbook读书笔记
今天开始读<python-cookbook>,书里有许多python优雅的写法,可以作为python的一本进阶书. 感谢译者.项目地址: https://github.com/yidao6 ...
- ActiveMQ笔记之点对点队列(Point-to-Point)
1. 点对点通信 点对点是一种一对一通信方式,更像是有一个队列,一个人往队列里放消息,另一个人从队列中取消息,其最大的特点是一个消息只会被消费一次,即使有多个消费者同时消费,他们消费的也是不同的消息. ...
- Redis笔记之常用命令
keys keys用来获取符合指定规则的键,keys的语法规则如下: keys <pattern> 比如最简单的全等匹配,下面这个命令只会匹配键值完全等于foo的: 127.0.0.1:6 ...
- vim 颜色主题设置
先看看vim编辑器提供的色彩配置方案: 首先进入vim的color目录(/usr/share/vim/vim74/colors,不同的系统目录不同,建议在-/建立.vim目录,然后在些目录里建立对应的 ...
- vsftpd 安装配置详细教程
linux下ftp软件不少,大致特点:<br /> wu-ftp:比较老牌,但针对它的攻击比较多,设置比较麻烦,但功能比较强大.<br /> vsftpd:功能强大,配置也比较 ...
- 在Ubuntu上安装Redis MySQL MongoDB memcached Nginx
1.安装Redis sudo apt-get install redis-server 2.安装MySQL sudo apt-get install mysql-server 3.安装MongoDB ...
- u-boot启动第一阶段
目标板:2440开发板 u-boot启动的第一阶段是在文件start.S中完成的,这个过程对不同硬件平台的设置是不同的.下面进入start.S _start: b reset //跳转到reset / ...
- python模块之itertools
在循环对象和函数对象中,我们了解了循环器(iterator)的功能.循环器是对象的容器,包含有多个对象.通过调用循环器的next()方法 (__next__()方法,在Python 3.x中),循环器 ...
- Linux文件访问流程及磁盘inode和block总结
Linux文件访问流程 inode是文件的唯一标识,文件名和inode的对应关系存放在上一级目录的block中:inode里有指向文件block的指针和文件的属性,从而通过block获得文件数据. 磁 ...
- HBase原理解析(转)
本文属于转载,原文链接:http://www.aboutyun.com/thread-7199-1-1.html 前提是大家至少了解HBase的基本需求和组件. 从大家最熟悉的客户端发起请求开始讲 ...