hadoop 2.6全分布安装

环境:centos 6.6 + hadoop2.6

虚拟机:(vmware fusion 7.0.0)

虚拟机hostname      /    IP地址

master / 192.168.187.102

slave01 / 192.168.187.103

slave02 / 192.168.187.104

注:前三个步骤都是准备工作,如果已经完成,可直接进入步骤四

步骤一: 先在3台虚拟机上,设置hostname及修改hosts文件

1.1 先正确设置各虚拟机的hostname

sudo vi /etc/sysconfig/network

将HOSTNAME=后的内容,改成想要的机器名

1.2 修改hosts文件

sudo vi /etc/hosts

192.168.187.102 master

192.168.187.103 slave01

192.168.187.104 slave02

这样,就不用记IP了

这一步完成后,最好重启一次系统,以便生效。然后可以用ping master(或slave01、slave02)试下,正常的话,应该能ping通

注:hostname不要命名为“xxx.01,xxx.02”之类以“.数字”结尾,否则到最后hadoop的NameNode服务将启动失败。

步骤二:在3台虚拟机上安装jdk

yum install java

注:hadoop是java写的,jdk是必须的。上述命令,会安装openjdk最基本的运行时,没有源码和javac等其它工具。如果要安装javac等编译工具及源码

yum install java-1.7.0-openjdk-devel

yum install java-1.7.0-openjdk-src

另外openjdk安装后,不会默许设置JAVA_HOME环境变量,要查看安装后的目录,可以用命令

sudo update-alternatives --config java 看到

默认jre目录为:/usr/lib/java/jvm/jre-1.7.0-openjdk.x86_64

如要设置环境变量,可用命令 sudo vi /etc/profile

在最后添加

export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75.x86_64
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/jre/lib/dt.jar:$JAVA_HOME/jre/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

注:如果不喜欢openjdk,想安装oracle官方的jdk,可按下面步骤操作

a) rpm -qa | grep java

即:查看当前已经安装的跟java相关的包,如果显示有openjdk在其中

b) yum -y remove java

一般这样就会卸载干净,执行完以后,再运行 a)中的rpm -qa | grep java看看,如果还有残留,可运行

rpm -e --nodeps tzdata-java-2015a-1.el6.noarch (最后的部分为要删除的包名,即刚才查出来的结果)

重新安装sun jdk,先从官网下载安装文件

a) 上传rpm安装文件到虚拟机,参考下面的命令

scp jdk-7u51-linux-x64.rpm [email protected]:/home/hadoop/

b) 到虚拟机上,执行安装

rpm -ivh jdk-7u51-linux-x64.rpm

c) 然后修改环境变量 sudo vi /etc/profile,在最后加下面三行

export JAVA_HOME=/usr/java/jdk1.7.0_51
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

保存退出,然后输入 source /etc/profile 以便让新环境变量生效

步骤三:在3台虚拟机上创建专门用户hadoop

useradd hadoop (创建用户)

passwd hadoop (设置密码,为简单起见,3台机器上的hadoop密码最好设置成一样,比如hadoop123)

步骤四:配置ssh免密码登录

hadoop工作时,各节点要相互通讯,正常情况下linux之间通讯要提供用户名、密码(目的是保证通讯安全),如果需要人工干预输入密码,显然不方便,做这一步的目的,是让各节点能自动通过安全认证,不影响正常通讯。

4.1 先在master上,生成公钥、私钥对

以hadoop身份登录到系统

cd (进入个人主目录,默认为/home/hadoop)

ssh-keygen -t rsa -P ‘‘ (注:最后是二个单引号)

即:以rsa算法,生成公钥、私钥对,-P ‘‘表示空密码。该命令运行完后,会在个人主目录下生成.ssh目录,里面会有二个文件id_rsa(私钥) ,id_rsa.pub(公钥)

4.2 导入公钥

cat .ssh/id_rsa.pub >> .ssh/authorized_keys

执行完以后,可以在本机上测试下,用ssh连接自己,即:ssh localhost (或ssh master),如果不幸还是提示要输入密码,说明还没起作用,还有一个关键的操作

chmod 600 .ssh/authorized_keys (修改文件权限,否则不起作用)

然后再测试下 ssh localhost ,如果不需要输入密码,就连接成功,表示ok,一台机器已经搞定了。

4.3 在其它机器上生成公钥、密钥,并将公钥文件复制到master

a) 以hadoop身份登录其它二台机器 slave01、slave02,执行 ssh-keygen -t rsa -P ‘‘ 生成公钥、密钥

b) 然后用scp命令,把公钥文件发放给master(即:刚才已经搞定的那台机器)

slave01上:

scp .ssh/id_rsa.pub [email protected]:/home/hadoop/id_rsa_01.pub

slave02上:

scp .ssh/id_rsa.pub [email protected]:/home/hadoop/id_rsa_02.pub

这二行执行完后,回到master中,查看下/home/hadoop目录,应该有二个新文件id_rsa_01.pub、id_rsa_02.pub,然后在master上,导入这二个公钥

cat id_rsa_01.pub >> .ssh/authorized_keys

cat id_rsa_02.pub >> .ssh/authorized_keys

这样,master这台机器上,就有所有3台机器的公钥了。

4.4 将master上的“最全”公钥,复制到其它机器

a) 继续保持在master上,

scp .ssh/authorized_keys [email protected]01:/home/hadoop/.ssh/authorized_keys

scp .ssh/authorized_keys [email protected]02:/home/hadoop/.ssh/authorized_keys

b) 修改其它机器上authorized_keys文件的权限

slave01以及slave02机器上,均执行命令

chmod 600 .ssh/authorized_keys

4.5 验证

在每个虚拟机上,均用 ssh 其它机器的hostname 验证下,如果能正常无密码连接成功,表示ok

小结:该步骤非常重要,主要思路是在各节点上生成公钥、私钥,然后将公钥发放其它所有节点。RSA算法是非对称加密算法,仅公布“公钥”,只要私钥不外泄,还是不能解密的,所以安全性依然有保障。

步骤五:上传并解压hadoop2.6

a)在本机上,用scp命令上传hadoop2.6到master

scp hadoop-2.6.0.tar.gz [email protected]:/home/hadoop/

b) 以hadoop身份登录到master,运行以下命令解压

tar -zxvf hadoop-2.6.0.tar.gz

步骤六:修改配置

一共有7个文件要修改:

$HADOOP_HOME/etc/hadoop/hadoop-env.sh

$HADOOP_HOME/etc/hadoop/yarn-env.sh

$HADOOP_HOME/etc/hadoop/core-site.xml

$HADOOP_HOME/etc/hadoop/hdfs-site.xml

$HADOOP_HOME/etc/hadoop/mapred-site.xml

$HADOOP_HOME/etc/hadoop/yarn-site.xml

$HADOOP_HOME/etc/hadoop/slaves

其中$HADOOP_HOME表示hadoop根目录,本文中默认为/home/hadoop/hadoop-2.6.0

a) hadoop-env.sh 、yarn-env.sh

这二个文件主要是修改JAVA_HOME后的目录,改成实际本机jdk所在目录位置

vi etc/hadoop/hadoop-env.sh (及 vi etc/hadoop/yarn-env.sh)

找到下面这行的位置,改成(jdk目录位置,大家根据实际情况修改)

export JAVA_HOME=/usr/java/jdk1.7.0_51

b) core-site.xml 参考下面的内容修改:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
 3 <configuration>
 4   <property>
 5     <name>hadoop.tmp.dir</name>
 6     <value>/home/hadoop/tmp</value>
 7   </property>
 8   <property>
 9     <name>fs.default.name</name>
10     <value>hdfs://master:9000</value>
11   </property>
12 </configuration>

注:/home/hadoop/tmp 目录如不存在,则先mkdir手动创建

c) hdfs-site.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
 3 <configuration>
 4   <property>
 5     <name>dfs.http.address</name>
 6     <value>master:50070</value>
 7   </property>
 8   <property>
 9     <name>dfs.namenode.rpc-address</name>
10     <value>master:9001</value>
11   </property>
12   <property>
13     <name>dfs.namenode.secondary.http-address</name>
14     <value>master:50090</value>
15   </property>
16   <property>
17     <name>dfs.replication</name>
18     <value>2</value>
19   </property>
20   <property>
21     <name>dfs.datanode.data.dir</name>
22     <value>/home/hadoop/data</value>
23   </property>
24 </configuration>

类似的:/home/hadoop/data目录如果不存在,也需要先手动创建。dfs.replication表示数据副本数,一般不大于datanode的节点数。

d) mapred-site.xml

 1 <?xml version="1.0"?>
 2 <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
 3 <configuration>
 4   <property>
 5     <name>mapred.job.tracker</name>
 6     <value>master:9001</value>
 7   </property>
 8   <property>
 9     <name>mapred.map.tasks</name>
10     <value>20</value>
11   </property>
12   <property>
13     <name>mapred.reduce.tasks</name>
14     <value>4</value>
15   </property>
16   <property>
17     <name>mapreduce.framework.name</name>
18     <value>yarn</value>
19   </property>
20   <property>
21     <name>mapreduce.jobtracker.http.address</name>
22     <value>master:50030</value>
23   </property>
24   <property>
25     <name>mapreduce.jobhistory.address</name>
26     <value>master:10020</value>
27   </property>
28   <property>
29     <name>mapreduce.jobhistory.webapp.address</name>
30     <value>master:19888</value>
31   </property>
32 </configuration>

e)yarn-site.xml

 1 <?xml version="1.0"?>
 2 <configuration>
 3   <property>
 4     <name>yarn.resourcemanager.address</name>
 5     <value>master:8032</value>
 6   </property>
 7
 8   <property>
 9     <name>yarn.resourcemanager.scheduler.address</name>
10     <value>master:8030</value>
11   </property>
12
13   <property>
14     <name>yarn.resourcemanager.webapp.address</name>
15     <value>master:8088</value>
16   </property>
17
18   <property>
19     <name>yarn.resourcemanager.resource-tracker.address</name>
20     <value>master:8031</value>
21   </property>
22
23   <property>
24     <name>yarn.resourcemanager.admin.address</name>
25     <value>master:8033</value>
26   </property>
27
28   <property>
29     <name>yarn.nodemanager.aux-services</name>
30     <value>mapreduce_shuffle</value>
31   </property>
32
33   <property>
34     <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
35     <value>org.apache.hadoop.mapred.ShuffleHandler</value>
36   </property>
37 </configuration>

最后一个文件slaves暂时不管(可以先用mv slaves slaves.bak 将它改名),上述配置弄好后,就可以在master上启用 NameNode测试了,方法:

$HADOOP_HOME/bin/hdfs namenode –format 先格式化

15/02/12 21:29:53 INFO namenode.FSImage: Allocated new BlockPoolId: BP-85825581-192.168.187.102-1423747793784

15/02/12 21:29:53 INFO common.Storage: Storage directory /home/hadoop/tmp/dfs/name has been successfully formatted.

等看到这个时,表示格式化ok

$HADOOP_HOME/sbin/start-dfs.sh

启动完成后,输入jps查看进程,如果看到以下二个进程:

5161 SecondaryNameNode

4989 NameNode

表示master节点基本ok了

再输入$HADOOP_HOME/sbin/start-yarn.sh ,完成后,再输入jps查看进程

5161 SecondaryNameNode

5320 ResourceManager

4989 NameNode

如果看到这3个进程,表示yarn也ok了

f) 修改slaves

如果刚才用mv slaves slaves.bak对该文件重命名过,先运行 mv slaves.bak slaves 把名字改回来,再

vi slaves 编辑该文件,输入

slave01

slave02

保存退出,最后运行

$HADOOP_HOME/sbin/stop-dfs.sh

$HADOOP_HOME/sbin/stop-yarn.sh

停掉刚才启动的服务

步骤七:将master上的hadoop目录复制到slave01,slave02

仍然保持在master机器上

cd 先进入主目录

scp -r hadoop-2.6.0 [email protected]01:/home/hadoop/

scp -r hadoop-2.6.0 [email protected]02:/home/hadoop/

注:slave01、slave02上的hadoop临时目录(tmp)及数据目录(data),仍然要先手动创建。

步骤八:验证

master节点上,重新启动

$HADOOP_HOME/sbin/start-dfs.sh

$HADOOP_HOME/sbin/start-yarn.sh

顺利的话,master节点上有几下3个进程:

7482 ResourceManager

7335 SecondaryNameNode

7159 NameNode

slave01、slave02上有几下2个进程:

2296 DataNode

2398 NodeManager

同时可浏览:

http://master:50070/

http://master:8088/

查看状态

其它注意事项:

a) master(即:namenode节点)若要重新格式化,请先清空各datanode上的data目录(最好连tmp目录也一起清空),否则格式化完成后,启动dfs时,datanode会启动失败

b) 为了方便操作,可修改/etc/profile,把hadoop所需的lib目录,先加到CLASSPATH环境变量中,同时把hadoop/bin,hadoop/sbin目录也加入到PATH变量中,可参考下面的内容:

 export HADOOP_HOME=/home/hadoop/hadoop-2.6.0
 export JAVA_HOME=/usr/java/jdk1.7.0_51
 export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$HADOOP_HOME/share/hadoop/common/hadoop-common-2.6.0.jar:$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.6.0.jar:$HADOOP_HOME/share/hadoop/common/lib/commons-cli-1.2.jar
 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
时间: 2024-11-10 17:25:07

hadoop 2.6全分布安装的相关文章

hadoop 2.6伪分布安装

hadoop 2.6的“伪”分式安装与“全”分式安装相比,99%的操作是相同的,唯一的区别是不用配置slaves文件,下面是几个关键的配置: (安装JDK.创建用户.设置SSH免密码.设置环境变量这些准备工作,大家可参考hadoop 2.6全分布安装 一文,以下所有配置文件,均在$HADOOP_HOME/etc/hadoop目录下) 一.修改hadoop-env.sh.yarn-env.sh 主要是设置JAVA_HOME的路径 二.修改core-site.xml 1 <configuration

Hadoop 单节点 & 伪分布 安装手记

实验环境CentOS 6.XHadoop 2.6.0JDK       1.8.0_65 目的这篇文档的目的是帮助你快速完成单机上的Hadoop安装与使用以便你对Hadoop分布式文件系统(HDFS)和Map-Reduce框架有所体会,比如在HDFS上运行示例程序或简单作业等. 先决条件支持平台    GNU/Linux是产品开发和运行的平台. Hadoop已在有2000个节点的GNU/Linux主机组成的集群系统上得到验证.    Win32平台是作为开发平台支持的.由于分布式操作尚未在Win

hadoop 2.5 伪分布安装

最新的hadoop2.5 安装目录做了一定修改,安装变得稍微简单一点 首先安装准备工具 $ sudo apt-get install ssh $ sudo apt-get install rsync 配置ssh $ ssh localhost If you cannot ssh to localhost without a passphrase, execute the following commands: $ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

hadoop全分布虚拟机网络配置(一)

基于VMware 15+CentOS 7+Hadoop 2.6,hadoop的搭建主要用于个人学习,水平有限. hadoop搭建一:虚拟机网络配置和基础 hadoop搭建二:hadoop全分布搭建 hadoop搭建三:hadoop伪分布搭建 hadoop搭建四:hive安装配置 本篇主要记录了hadoop全分布搭建中:固定ip地址,master节点和slave节点连接. 一,虚拟机网络模式选择 虚拟机网络模式主要有两种可以选择:桥接模式/NAT模式. 两种模式区别在于主从性.桥接模式中主机与虚拟

#hadoop#单机(伪分布)安装及测试

tips:这个部署完全在以root用户操作,系统为ubuntu14.04,使用了Oracle JDK7_u55替换原来的OpenJDK 安装过程: 安装Java: 从自己的宿主机ftp服务器下载包: cd /usr/lib/jvm wget ftp://192.168.42.110/jdk-7u55-linux-x64.tar.gz  tar xvf jdk-7u55-linux-x64.tar.gz mv jdk1.7.0_55/ java-7-sun 编辑bashrc: vi ~/.bash

Hadoop伪分布安装

1.hadoop的伪分布安装 1.1 设置ip地址 执行命令 service network restart 验证: ifconfig 1.2 关闭防火墙 执行命令 service iptables stop 验证: service iptables status 1.3 关闭防火墙的自动运行(在上面的那一步即使我们关闭了防火墙,还是在有些情况下,防火墙会自动起来,那些情况就是下面的命令的结果为on的时候) 执行命令 chkconfig iptables off 验证: chkconfig --

Hadoop伪分布安装详解+MapReduce运行原理+基于MapReduce的KNN算法实现

本篇博客将围绕Hadoop伪分布安装+MapReduce运行原理+基于MapReduce的KNN算法实现这三个方面进行叙述. (一)Hadoop伪分布安装 1.简述Hadoop的安装模式中–伪分布模式与集群模式的区别与联系. Hadoop的安装方式有三种:本地模式,伪分布模式,集群(分布)模式,其中后两种模式为重点,有意义 伪分布:如果Hadoop对应的Java进程都运行在一个物理机器上,称为伪分布 分布:如果Hadoop对应的Java进程运行在多台物理机器上,称为分布.[集群就是有主有从] 伪

Hadoop-2.6.0伪分布--安装配置hbase

Hadoop-2.6.0伪分布--安装配置hbase 1.用到的hadoop与hbase: 2.安装hadoop: 具体安装看这篇博文: http://blog.csdn.net/baolibin528/article/details/42939477 hbase所有版本下载 http://archive.apache.org/dist/hbase/ 3.解压hbase: 结果: 4.修改hbase 文件权限为一般用户权限: 5.设置环境变量: 配置内容: 保存配置: 6.进入配置文件目录: 7

CentOS 6.5 伪分布安装

CentOS 6.5 伪分布安装 软件准备  jdk-6u24-linux-i586.bin .hadoop-1.2.1.tar.gz.hadoop-eclipse-plugin-1.2.1.jar . Eclipse-jee-indigo-SR2-linux-gtk.tar.gz 假设:  所有软件压缩包都放在  /home/hadoop 文件夹下. 1.JDK安装 1.1           root用户登录,使用命令 mkdir  /usr/local/program 新建目录progra