hadoop完全分布式模式的安装和配置步骤

hadoop完全分布式模式的安装和配置步骤

标签: Hadoop


[TOC]


本文是入门教程,以hadoop-1.2.1为例,介绍hadoop完全分布式的部署和配置步骤

实验条件:

  • 三台阿里云云服务器(已经配置好Java环境)

  • 一台PC机用于远程登录服务器

前排提示:

  • JAVA环境需每个服务器单独配置(注意路径一致)

  • hadoop相关配置只需配置一个master即可,其他的机子直接scp复制


配置步骤

0.下载解压

  • 下载解压Hadoop安装包

下载:
wget https://dist.apache.org/repos/dist/release/hadoop/common/hadoop-1.2.1/hadoop-1.2.1.tar.gz

解压:tar xzvf hadoop-1.2.1.tar.gz

1.配置hosts文件和hadoop-env.sh文件

  • 修改/etc/host,使彼此能解析主机名

root@RfidLabMaster:/etc# cat hosts
127.0.0.1 localhost
127.0.1.1       localhost.localdomain   localhost
# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
#10.116.155.242 iZ945z9p7yxZ
#10.116.155.242 RfidLabMaster
120.25.162.238 RfidLabMaster
120.27.138.14  RfidLabSlave1
120.27.137.211 RfidLabSlave2
  • 进入hadoop的解压目录,编辑conf/hadoop-env.sh(版本不同,配置文件位置有所变化)

查看本机的JAVA_HOME:env |grep JAVA_HOME

显示:JAVA_HOME=/usr/lib/jvm/jdk1.8.0_60

编辑hadoop-env.sh:vim hadoop-env.sh

找到export JAVA_HOME,去掉#注释改为本机的
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_60

2.ssh配置

2.1.以brian用户登录,在brian主目录下进行操作
进入root目录:
cd /root
生成密钥:
ssh-keygen -t rsa
cd .ssh
cp id_rsa.pub authorized_keys

2.2分发ssh公钥
把各个节点的authorized_keys的内容相互拷贝到对方的此文件中,即可免密码彼此ssh连入
把所有节点的authorized_keys的内容拷贝到一起形成一个大文件,再用这个新的大authorized_keys覆盖所有节点的原来的该文件。

3.编辑conf目录下core-site.xml,hdfs-site.xml,mapred-site.xml三个核心配置文件

  • 修改core-site.xml文件
    <configuration></configuration>标签中添加:

<property>
 <name>fs.default.name</name>
  <value>hdfs://RfidLabMaster:9000</value>
</property>
<property>
  <name>hadoop.tmp.dir</name>
<value>/home/brian/hadoopdir/tmp</value>
</property>
  • 修改hdfs-site.xml文件
    <configuration></configuration>标签中添加:

<property>
<name>dfs.name.dir</name>
<value>/home/brian/hadoopdir/name</value> #hadoop的name目录路径
<description>  </description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/brian/hadoopdir/data</value>
<description> </description>
</property>
<property>
  <name>dfs.replication</name>
  <!-- 我们的集群有两个结点,所以rep两份 -->
  <value>2</value>
</property>
  • 修改mapred-site.xml文件
    <configuration></configuration>标签中添加:

<property>
  <name>mapred.job.tracker</name>
  <value>hdfs://RfidLabMaster:9001</value>
</property>
<property>
  <name>mapred.local.dir</name>
 <value>/home/brian/hadoopdir/local</value>
</property>

4.修改masters和slaves文件

conf/masters

RfidLabMaster

conf/slaves

RfidLabSlave1
RfidLabSlave2

5.向各个节点复制hadoop

scp -r ./hadoop-1.2.1 RfidLabSlave1:/home/brian

6.格式化分布式文件系统

在hadoop目录下输入
bin/hadoop namenode -format

7.启动守护进程

在hadoop目录下输入
bin/start-all.sh


结果

主节点

brian@RfidLabMaster:~/hadoop-1.2.1/logs$ jps
26721 JobTracker
26449 NameNode
26889 Jps
26633 SecondaryNameNode

从节点

brian@RfidLabSlave1:~$ jps
20402 Jps
20204 DataNode
20302 TaskTracker

查看日志文件,均无ERROR和异常


遇到的问题

1.[mater日志异常]:hadoop/hdfs/name is in an inconsistent state: storage directory(hadoop/hdfs/data/) does not exist or is not accessible

2.[slave日志异常]:Hadoop : java.io.IOException: Call to failed on local exception: java.io.EOFException

问题1和2:好像是忘记先格式化分布式文件系统了,[问题2]好像是[问题1]的连带问题,参看[6.格式化分布式文件系统]

3.[slave日志异常]:ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in

问题3:好像是重复格式化后ID冲突的问题,上面的两个链接有各种解决办法,什么在版本文件里改ID之类的,最简单的好像是直接删掉在文件3.编辑conf目录下core-site.xml,hdfs-site.xml,mapred-site.xml三个核心配置文件中涉及到的文件夹

4.[master日志]:ERROR org.apache.hadoop.security.UserGroupInformation: PriviledgedActionException as:brian cause:java.io.IOException: File/home/brian/hadoop_dir/tmp/mapred/system/jobtracker.info could only be replicated to 0 nodes, instead of 1

问题4:可能我之前的配置有问题,重新配置了一遍,然后按照[问题3]里删文件解决的

补充参考hadoop 可能遇到的错误

联系作者

作者更多文章:@brianway


brianway
live for show,一个菜鸟的成长之路

服务器端研发爱好者.

1.4k 声望
447 粉丝
0 条评论
推荐阅读
如何准备校招技术面试
2017 年互联网校招已近尾声,作为一个非 CS 专业的应届生,零 ACM 经验、零期刊论文发表,我通过自己的努力和准备,从找实习到校招一路运气不错,面试全部通过,谨以此文记录我的校招感悟。

brianway10阅读 5.7k评论 2

HTAP 数据库如何实现?浅析开务数据库中的列存引擎
TP 与 AP 融合的 HTAP 数据库正成为业内的发展趋势。但由于大规模数据场景下 TP 与 AP 系统本身的复杂性,要在一套数据库系统中融合两种使用场景的功能并不容易。浪潮推出的 HTAP 开务数据库(原:云溪数据库)采...

KaiwuDB阅读 2.4k

封面图
基于Seata探寻分布式事务的实现方案
随着业务的快速发展、业务复杂度越来越高,几乎每个公司的系统都会从单体走向分布式,特别是转向微服务架构。随之而来就必然遇到分布式事务这个难题,这篇文章通过seata框架总结了分布式事务的几种解决方案

京东云开发者2阅读 374

封面图
软硬件结合,分布式数据库 ZNBase 存储架构优化实践
ZNBase 是开放原子开源基金会旗下的首个分布式数据库项目,由浪潮大数据团队开源并捐赠。本文将介绍 ZNBase 的存储架构,以及 ZNBase 技术团队在其 KV 存储引擎基础上所做的优化实践。

KaiwuDB阅读 1.1k

封面图
浅析数据库多表连接:开务数据库的分布式 join 计算
Join 是 SQL 中的常用操作。在实际的数据库应用中,我们经常需要从多个数据表中读取数据,这时我们就可以使用 SQL 语句中的连接(join),在两个或多个数据表中查询数据。

KaiwuDB阅读 1.1k

封面图
开务数据库delete流程解读
delete主要分为两个部分,一个部分为scan过程,拉取表中的数据,第二部分,根据过滤条件,调用b.Del()函数删除对应的数据。相关逻辑计划对象图为:

KaiwuDB阅读 936

封面图
深入解析分布式数据库的 SQL 引擎优化
开务数据库(原:云溪数据库)的 SQL 引擎包含连接、编译、缓存、分布式日志和分布式执行五大服务组件,实现了多集群多节点协同的高效计算,大大提升了用户的查询效率。

KaiwuDB阅读 881

封面图

服务器端研发爱好者.

1.4k 声望
447 粉丝
宣传栏