Hadoop2.5.2集群部署(完全分布式)

简介: 本文描述了如何安装、配置和管理有实际意义的Hadoop集群,安装Hadoop集群通常要将安装软件解压到集群内的所有机器上。通常,集群里一台机器被指定为 NameNode,另一台不同的机器被指定为DataNode。

环境介绍

硬件环境

CPU 4 MEM 4G 磁盘 60G 

软件环境

OS:centos6.5版本 64位

Hadoop:hadoop2.5.2 64位

JDK: JDK 1.8.0_91

主机配置规划

Hadoop01  172.16.1.156   ( NameNode)
Hadoop02  172.16.1.157      ( DataNode)
Hadoop03  172.16.1.158     (DataNode)

设置主机名

这里主机名修改不是必须条件,但是为了操作简单,建议将主机名设置一下,需要修改调整各台机器的hosts文件配置,命令如下:

如果没有足够的权限,可以切换用户为root

三台机器统一增加以下host配置:

配置免密码登录SSH

1)生成密钥:
ssh-keygen -t rsa  

2)id_dsa.pub(公钥)追加到授权key中:

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys    

3)将认证文件复制到另外两台DataNode节点上:

scp ~/.ssh/authorized_keys 172.16.1.157:~/.ssh/    

scp ~/.ssh/authorized_keys 172.16.1.158:~/.ssh/  

3)测试:

ssh hadoop02或ssh hadoop03

各节点安装JDK

(1)检查jdk版本、卸载openjdk版本

查看目前安装openjdk信息:rpm -qa|grep java

卸载以上三个文件(需要root权限,登录root权限卸载)

rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64

rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64

rpm -e --nodeps tzdata-java-2013g-1.el6.noarch

(2)选择版本是jdk-8u91-linux-x64.gz
(3)解压安装:

 (4)重命名jdk为jdk1.8(用mv命令)
 (5) 配置环境变量:vi /etc/profile加入以下三行
        #JAVA_HOME  
        export JAVA_HOME=/home/hadoop/jdk1.8
        export PATH=$JAVA_HOME/bin:$PATH 
   (6)执行source /etc/profile使环境变量的配置生效
 (7)执行Java –version查看jdk版本,验证是否成功
 (8) 将hadoop01机器上安装好JDK复制到另外两台节点上

Hadoop安装

每台节点都要安装

Hadoop

上传

hadoop-2.5.2.tar.gz

到用户

/home/hadoop/software

目录下。


解压

tar -zvxf hadoop-2.5.2.tar.gz  -C  /home/hadoop /

添加环境变量

vi  /etc/profile ,尾部添加如下
export JAVA_HOME= /home/hadoop/jdk1.8
export HADOOP_HOME= /home/hadoop/hadoop-2.5.2
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop

export CLASSPATH=.:$JAVA_HOME/lib:$HADOOP_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH 

设置环境变量立即生效

source /etc/profile

配置Hadoop文件

(1) core-site.xml

<configuration>
     <property>
            <name>fs.defaultFS</name>
            <value>hdfs://hadoop01:9000</value>
     </property>
     <property>
            <name>hadoop.tmp.dir</name>
            <value>file:/home/hadoop/hadoop-2.5.2/hadoop_tmp</value>
     </property>
     <property>
            <name>io.file.buffer.size</name>
            <value>131072</value>
     </property>
</configuration>
(2)hdfs-site.xml 
<configuration>
       <property>
               <name>dfs.replication</name>
                <value>2</value>
       </property>
       <property>
                <name>dfs.namenode.secondary.http-address</name>
               <value>
hadoop01
:9001</value>
       </property>
       <property>
              <name>dfs.namenode.name.dir</name>
              <value>file:
/home/hadoop/hadoop-2.5.2
/dfs/name</value>
              <description>namenode上存储hdfs元数据</description>
       </property>
       <property>
               <name>dfs.datanode.data.dir</name>
               <value>file:/
home/hadoop/hadoop-2.5.2
/dfs/data</value>
               <description>datanode上数据块物理存储位置</description>
       </property>
       <property>
               <name>dfs.webhdfs.enabled</name>
                <value>true</value>
       </property>
</configuration> 
注:访问namenode的
webhdfs
使用50070端口,访问datanode的webhdfs使用50075端口。要想不区分端口,直接使用namenode的IP和端口进行所有webhdfs操作,就需要在所有datanode上都设置hdfs-site.xml中dfs.webhdfs.enabled为true。

(3)mapred-site.xml
<configuration>
       <property>
             <name>mapreduce.framework.name</name>
             <value>yarn</value>
      </property>
      <property>
             <name>mapreduce.jobhistory.address</name>
             <value>hadoop01:10020</value>
      </property>
      <property>
             <name>mapreduce.jobhistory.webapp.address</name>
             <value>hadoop01:19888</value>
      </property>
</configuration> 
jobhistoryHadoop自带一个历史服务器,记录Mapreduce历史作业。默认情况下,jobhistory没有启动,可用以下命令启动:
sbin/mr-jobhistory-daemon.sh start historyserver  
(4)yarn-site.xml
<configuration>
       <property>
              <name>yarn.nodemanager.aux-services</name>
              <value>mapreduce_shuffle</value>
       </property>
       <property>
               <name>yarn.resourcemanager.address</name>
               <value>
hadoop01
:8032</value>
       </property>
       <property>
              <name>yarn.resourcemanager.scheduler.address</name>
              <value>hadoop01:8030</value>
       </property>
       <property>
              <name>yarn.resourcemanager.resource-tracker.address</name>
              <value>hadoop01:8031</value>
       </property>
       <property>
               <name>yarn.resourcemanager.admin.address</name>
               <value>hadoop01:8033</value>
       </property>
       <property>
               <name>yarn.resourcemanager.webapp.address</name>
               <value>hadoop01:8088</value>
       </property>
</configuration>   

(5)修改slaves文件,添加datanode节点hostname到slaves文件中

hadoop01
hadoop02
(6)

如果已经配置了JAVA_HOME环境变量,hadoop-env.sh与yarn-env.sh这两个文件不用修改,因为里面配置就是:

export JAVA_HOME=${JAVA_HOME}


               
               
如果没有配置JAVA_HOME环境变量,需要分别在 hadoop-env.sh yarn-env.sh


                         
                         


                              
                                    
手动
添加
JAVA_HOME 


                      
                      
export JAVA_HOME=


                              
                                     
/home/hadoop/jdk1.8
最后,将整个hadoop-2.5.2文件夹及其子文件夹使用scp复制到两台Slave相同目录中:


运行Hadoop

格式化

hdfs namenode –format  

启动Hadoop

start-dfs.sh   
start-yarn.sh  
可以用一条命令:
start-all.sh

停止Hadoop

stop-all.sh 

JPS查看进程

master主节点进程:
slave数据节点进程:

通过浏览器查看集群运行状态

http://172.16.1.156:50070

http://172.16.1.156:8088/

http://172.16.1.156:19888

jobhistory Hadoop 自带一个历史服务器,记录 Mapreduce 历史作业。默认情况下, jobhistory 没有启动,可用以下命令启动:
sbin/mr-jobhistory-daemon.sh start historyserver 

测试Hadoop

1 )建立输入文件:

vi wordcount.txt   

输入内容为: 

hello you

hello me

hello everyone

2)建立目录

hadoop fs -mkdir /data/wordcount    

hadoop fs –mkdir /output/   

目录 /data/wordcount 用来存放 Hadoop 自带 WordCount 例子的数据文件,运行这个 MapReduce 任务结果输出到 /output/wordcount 目录中。

3)上传文件

hadoop fs -put wordcount.txt/data/wordcount/   

4)执行wordcount程序

hadoop jar usr/local/program/Hadoop-2.5.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.1.jar wordcount /data/wordcount /output/wordcount/    

5)查看结果

hadoop fs -text /output/wordcount/part-r-00000    

[root@m1mydata]# hadoop fs -text /output/wordcount/part-r-00000  
everyone  1 
hello  3  
me    1  
you   1 

搭建中遇到问题总结

问题一:
在配置环境变量过程可能遇到输入命令ls命令不能识别问题
ls -bash: ls: command not found
原因:在设置环境变量时,编辑profile文件没有写正确,export PATH=$JAVA_HOME/bin:$PATH中冒号误写成分号 ,导致在命令行下ls等命令不能够识别。
解决方案:
 export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
问题二:
在主机上启动hadoop集群,然后使用jps查看主从机上进程状态,能够看到主机上的resourcemanager和各个从机上的nodemanager,但是过一段时间后,从机上的nodemanager就没有了,主机上的resourcemanager还在。
原因是防火墙处于开启状态:
注:nodemanager启动后要通过心跳机制定期与RM通信,否则RM会认为NM死掉,会停止NM服务。
service 方式
开启: service iptables start 
关闭: service iptables stop
相关文章
|
1月前
|
分布式计算 NoSQL Java
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
45 2
|
1月前
|
分布式计算 Hadoop
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
48 1
|
1月前
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
45 1
|
1月前
|
分布式计算 Hadoop 网络安全
Hadoop-08-HDFS集群 基础知识 命令行上机实操 hadoop fs 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
Hadoop-08-HDFS集群 基础知识 命令行上机实操 hadoop fs 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
37 1
|
1月前
|
存储 机器学习/深度学习 缓存
Hadoop-07-HDFS集群 基础知识 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
Hadoop-07-HDFS集群 基础知识 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
47 1
|
1月前
|
分布式计算 资源调度 Hadoop
Hadoop-05-Hadoop集群 集群WordCount 超详细 真正的分布式计算 上传HDFS MapReduce计算 YRAN查看任务 上传计算下载查看
Hadoop-05-Hadoop集群 集群WordCount 超详细 真正的分布式计算 上传HDFS MapReduce计算 YRAN查看任务 上传计算下载查看
50 1
|
1月前
|
存储 SQL 消息中间件
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
49 0
|
3月前
|
存储 分布式计算 算法
探索Hadoop的三种运行模式:单机模式、伪分布式模式和完全分布式模式
在配置Hadoop集群之前,了解这三种模式的特点、适用场景和配置差异是非常重要的。这有助于用户根据个人需求和资源情况,选择最适合自己的Hadoop运行模式。在最初的学习和开发阶段,单机模式和伪分布式模式能为用户提供便利和成本效益。进而,当用户要处理大规模数据集时,完全分布式模式将是理想的选择。
199 2
|
3月前
|
存储 分布式计算 Hadoop
【揭秘Hadoop背后的秘密!】HDFS读写流程大曝光:从理论到实践,带你深入了解Hadoop分布式文件系统!
【8月更文挑战第24天】Hadoop分布式文件系统(HDFS)是Hadoop生态系统的关键组件,专为大规模数据集提供高效率存储及访问。本文深入解析HDFS数据读写流程并附带示例代码。HDFS采用NameNode和DataNode架构,前者负责元数据管理,后者承担数据块存储任务。文章通过Java示例演示了如何利用Hadoop API实现数据的写入与读取,有助于理解HDFS的工作原理及其在大数据处理中的应用价值。
105 1
|
3月前
|
存储 缓存 分布式计算
下一篇
无影云桌面