阅读目录

  • 概要
  • 章节1:安装java 1.6
  • 章节2:设置ssh无密码登录
  • 章节3:Hadoop的安装(在Hadoop用户下)
  • 章节4:配置Hadoop相关配置文件
  • 章节5:Hadoop启动
  • 章节6:Hadoop环境测试
  • 章节7:参考链接

概要

Hadoop有以下3种运行模式:
  • 独立(或本地)模式 :    无需运行任何守护进程,所有程序都在同一个JVM上运行。在此模式下测试和调试MapReduce程序很方便,因此该模式在开发阶段比较合适。
  • 伪分布模式: Hadoop守护进程运行在本地机器上,模拟一个小规模的集群;
  • 全分布模式: Hadoop守护进程运行在一个集群上。
在独立模式下,将使用本地文件系统和本地MapReduce作业运行器;

在分布模式下,将启动HDFS和MapReduce(或YARN)守护进程。
本文主要介绍伪分布模式的搭建。

环境说明:
  • 操作系统     :Centos 6.8
  • java版本      :jdk1.6.0_45
  • hadoop版本:hadoop-1.2.1

准备工作:
  1. java文件  :jdk-6u45-linux-x64.bin
  2. hapoop文件:hadoop-1.2.1.tar.gz

本文主要内容如下:
  1. 安装Java1.6;
  2. 设置ssh无密码登录;
  3. 安装hadoop1.2.1,并修改配置文件;
  4. Hadoop启动;
  5. 测试hadoop;

本文经过本人亲自实践,可行。


回到顶部

一、安装java 1.6

具体操作见:
《【Java安装】Centos6.8 安装Java1.6》http://www.cnblogs.com/ssslinppp/p/5923298.html 

回到顶部

二、设置ssh无密码登录

  • 在伪分布模式下工作必须启动守护进程,而启动守护进程的前提是已经安装SSH。
  • Hadoop并不严格区分伪分布模式和全分布模式,它只是在集群内的(多台)主机(由slaves文件定义)上启动守护进程:SSH到各个主机并启动一个守护进程。
  • 伪分布模式是全分布模式的一个特例。
  • 在伪分布模式下,(单)主机就是本地计算机(localhost),因此需要确保用户能够SSH到本地机器,并且可以不输入密码。

SSH免密码登陆,应该在hadoop安装环境所在的用户下配置,比如本Hadoop伪集群搭建在hadoop用户下,则SSH   免密码登陆应该在hadoop用户下配置。
具体步骤如下:
1. 检查是否安装了ssh,若没有安装,则安装(以下指令并非都要执行):
  1. rpm -qa| grep ssh       //检查是否安装
  2. service sshd status     //查看ssh运行状态
  3. yum install ssh         //安装ssh
  4. chkconfig --list sshd   //查看是否开机启动
  5. chkconfig sshd on       //设置开机启动

2. 创建hadoop用户和组
  1. groupadd hadoop
  2. useradd -g hadoop -d /home/hadoop hadoop
  3. passwd hadoop

3. 设置ssh无密码登录

方式1:(测试没问题)
  1. su - hadoop        
  2. ssh-keygen -t rsa         //在~/.ssh/目录下生成id_rsa私钥和id_rsa.pub公钥
  3. cat ~/.ssh/id_rsa.pub > ~/.ssh/authorized_keys   
  4. chmod 600 ~/.ssh/authorized_keys
把公钥加到用于认证的公钥文件中,authorized_keys是用于认证的公钥文件


方式2: (未测试,应该可用)
基于空口令创建新的SSH密钥,以实现无密码登录
  1. su - hadoop
  2. ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
  3. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  4. chmod 600 ~/.ssh/authorized_keys

4. 测试
在本机上输入:
  1. ssh localhost   //首次时会让输入yes/no,但是不需要密码

回到顶部

三、Hadoop的安装(在Hadoop用户下)

  1. su - hadoop
  2. mkdir ~/hadoop-env   //将hadoop-1.2.1.tar.gz拷贝到该文件夹下
  3. cd hadoop-env/
  4. tar zxvf hadoop-1.2.1.tar.gz   //安装Hadoop
配置环境变量

  1. su -
  2. vi /etc/profile
添加内容如下:

  1. # set hadoop
  2. export HADOOP_HOME=/home/hadoop/hadoop-env/hadoop-1.2.1
  3. export PATH=$HADOOP_HOME/bin:$PATH
使环境变量生效

  1. source /etc/profile
  2. exit //退回到Hadoop用户

回到顶部

四、配置Hadoop相关配置文件

配置文件主要有如下几个:
  1. hadoop-env.sh;
  2. core-site.xml:用于配置通用属性;
  3. hdfs-site.xml:用于配置HDFS属性;
  4. mapred-site.xml:用于配置MapReduce属性;
  5. masters和slaves文件;
  6. /etc/hosts;
此外,docs子目录下还存放这个3个HTML文件,即:
  1. core-default.html
  2. hdfs-default.html
  3. mapred-default.html
分别保存各部分的默认属性配置。


下面介绍不同模式的关键配置属性:
组件名称 属性名称 独立模式 伪分布模式 全分布模式
Common fs.default.name file:///(默认) hdfs://localhost/ hdfs://namenode/
HDFS dfs.replication N/A 1 3(默认)
MapReduce 1 mapred.job.tracker local localhost:8021 jobtracker:8021
YARN(MapReduce 2) yarn.resource.manager.address N/A localhost:8032 resourcemanager:8032

1. 配置文件【hadoop-env.sh】
主要配置Java_home和hadoop安装环境变量。
  1. cd /home/hadoop/hadoop-env/hadoop-1.2.1/conf/
  2. cp hadoop-env.sh hadoop-env.sh.orig
  3. vi hadoop-env.sh
添加内容如下:

  1. #set java environment
  2. export JAVA_HOME=/usr/program/jdk1.6.0_45
  3. export HADOOP_HOME_WARN_SUPPRESS=true    
添加HADOOP_HOME_WARN_SUPPRESS的目的是防止老是出现“warning:$HADOOP_HOME is deprecated”


2. 配置文件【core-site.xml】
  1. cd /home/hadoop/hadoop-env
  2. mkdir hadooptmp
  3. chmod 777 -R /home/hadoop/hadoop-env/hadooptmp/  (以root用户执行)
  4. cp core-site.xml core-site.xml.orig
  5. vi core-site.xml
内容如下:

  1. <?xml version="1.0"?>
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
  3. <!-- Put site-specific property overrides in this file. -->
  4. <configuration>
  5. <property>
  6.    <name>fs.default.name</name>
  7.    <value>hdfs://localhost:9000/</value> 注:9000后面的“/”不能少
  8. </property>
  9. <property>
  10.    <name>hadoop.tmp.dir</name>
  11.    <value>/home/hadoop/hadoop-env/hadooptmp</value>
  12. </property>
  13. </configuration>
说明:hadoop分布式文件系统的两个重要的目录结构,一个是namenode上名字空间的存放地方,一个是datanode数据块的存放地方,还有一些其他的文件存放地方,这些存放地方都是基于hadoop.tmp.dir目录的,比如namenode的名字空间存放地方就是 ${hadoop.tmp.dir}/dfs/name, datanode数据块的存放地方就是${hadoop.tmp.dir}/dfs/data,所以设置好hadoop.tmp.dir目录后,其他的重要目录都是在这个目录下面,这是一个根目录。我设置的是进入/home/hadoop/hadoop-env/hadooptmp,当然这个目录必须是存在的。


3. 配置文件【hdfs-site.xml】
  1. cp hdfs-site.xml hdfs-site.xml.orig
  2. vi hdfs-site.xml
内容如下:

  1. <?xml version="1.0"?>
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
  3. <!-- Put site-specific property overrides in this file. -->
  4. <configuration>
  5.   <property>
  6.      <name>dfs.replication</name>
  7.      <value>1</value>
  8.   </property>
  9. </configuration>

4.配置文件【mapred-site.xml】
  1. cp mapred-site.xml mapred-site.xml.orig
  2. vi mapred-site.xml
内容如下:

  1. <?xml version="1.0"?>
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
  3. <!-- Put site-specific property overrides in this file. -->
  4. <configuration>
  5.   <property>
  6.     <name>mapred.job.tracker</name>
  7.     <value>localhost:9001</value>
  8.   </property>
  9. </configuration>

5. 配置文件【masters和slaves文件】
  1. cd /home/hadoop/hadoop-env/hadoop-1.2.1/conf
  2. cp masters  masters.orig
  3. cp slaves slaves.orig
  4. vi masters
  5. vi slaves
内容都设置为:
  1. localhost
说明:因为在伪分布模式下,作为master的namenode与作为slave的datanode是同一台服务器,所以配置文件

中的ip是一样的。

6. 主机名和IP解析配置(以root用户操作)
  1. cp /etc/hosts /etc/hosts.orig
  2. vi /etc/hosts
内容如下:

  1. 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
  2. ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
  3. 127.0.0.1 master
  4. 127.0.0.1 slave
说明:因为在伪分布模式下,所以master和slave是同一台机器。

回到顶部

五、Hadoop启动

1. 格式化新的HDFS文件系统
  • 在使用Hadoop前必须格式化生成一个全新的HDFS安装。
  • 该过程创建一个空文件系统,仅包含存储目录和namenode持久化数据结构的初始版本。由于namenode管理文件系统的元数据,并且datanode可以动态的加入或离开集群,因此这个格式化过程不针对datanode。
  • 同理,文件系统的规模也无从谈起,集群中datanode的数量将决定文件系统的规模。
  • datanode可以在文件系统格式化很久之后按需增加。
下面是格式化HDFS文件系统指令:(以hadoop用户执行
  1. su - hadoop
  2. cd /home/hadoop/hadoop-env/hadoop-1.2.1/bin/
  3. hadoop namenode -format   //nodename和-format中间有空格
将会生成如下命令结构:
  • hadoop.tmp.dir/dfs/name目录;


2. 启动Hadoop所有的进程
在启动hadoop所有的任务之前,先以root用户修改日志目录的权限(否则会报hadoop没有相应权限);
  1. su -
  2. chmod -R 777 /home/hadoop/hadoop-env/hadoop-1.2.1/libexec/../logs/
  3. service iptables stop //关闭防火墙
启动hadoop所有进程

  1. su - hadoop
  2. cd /home/hadoop/hadoop-env/hadoop-1.2.1/bin/
  3. ./start-all.sh
将会生成如下命令结构:
  • hadoop.tmp.dir/dfs/data:  存放datanode上的数据块数据;
  • hadoop.tmp.dir/dfs/namesecondary :是namenode的一个备份;
  • hadoop.tmp.dir/mapred/local目录;


3. 查看守护进程是否正在运行:
  1. jps
启动进程说明:
start-all.sh调用了如下语句:
  1. start-dfs.sh
  2. start-mapred.sh
start-dfs.sh启动了如下进程:

  1. namenode;
  2. datanode;
  3. secondarynamenode;
start-mapred.sh启动了如下进程:

  1. jobtracker;
  2. tasktracker;

正常情况下应该能看到:   

  1. 11761 SecondaryNameNode //是namenode的一个备份
  2. 12097 Jps
  3. 11637 DataNode
  4. 11524 NameNode
  5. 11862 JobTracker
  6. 11981 TaskTracker
启动之后,会在$hadoop.tmp.dir/dfs目录下生成data目录,这里面存放的是datanode上的数据块数据;

说明:
  • secondaryname是namenode的一个备份,里面同样保存了名字空间和文件到文件块的map关系。建议运行在另外一台机器上,这样master死掉之后,还可以通过secondaryname所在的机器找回名字空间,和文件到文件块得map关系数据,恢复namenode。
  • 启动之后,会在$hadoop.tmp.dir/dfs目录下生成data目录,这里面存放的是datanode上的数据块数据;因为笔者用的是单机,所以name和 data都在一个机器上,如果是集群的话,namenode所在的机器上只会有name文件夹,而datanode上只会有data文件夹。
问题解决:
在搭建过程中,在此环节出现的问题最多,经常出现启动进程不完整的情况,要么是datanode无法正常启动,就是namenode或是TaskTracker启动异常。解决的方式如下:
  1. 在Linux下关闭防火墙:使用service iptables stop命令;关闭hadoop:stop-all.sh
  2. 再次对namenode进行格式化:/home/hadoop/hadoop-env/hadoop-1.2.1/bin目录下执行hadoop namenode -format命令;
  3. 对服务器进行重启;
  4. 查看datanode或是namenode对应的日志文件,日志文件保存在/home/hadoop/hadoop-env/hadoop-1.2.1/logs目录下;
  5. 再次在/bin目录下用start-all.sh命令启动所有进程,通过以上的几个方法应该能解决进程启动不完全的问题了;


4. 通过web界面查看集群状态
  1. cd /home/hadoop/hadoop-env/hadoop-1.2.1/bin/
  2. hadoop dfsadmin -report
在web页面下查看hadoop工作情况:

  • Namenode:localhost:50070
  • JobTracker:localhost:50030

下面是查看的结果:

  • localhost:50070(或者 ip:50070查重,如:10.180.0.231::50070)
  • 查看namenode
  • localhost:50030(或者 ip:50030查重)
  • 查看jobtracker启动情况
说明:
若是在其他机器上访问不了,很可能是防火墙的问题,此时service iptables
stop(root用户操作),然后重新web访问就可以了。

回到顶部

六、Hadoop环境测试

一个测试例子是wordcount,计算输入文本中词语数量的程序。wordCount在Hadoop主目录下的Java程序包hadoop-example-1.2.1.jar中。

1. 文件准备
  1. /home/hadoop/hadoop-env/hadoop-1.2.1
  2. mkdir test
  3. cd test
  4. vi file01  (输入数个单词)
  5. vi file02  (输入数个单词)

2. 在hdfs分布式文件系统创建目录input:
  1. hadoop fs -mkdir input
查看创建情况:

  1. hadoop fs -ls
输出:

  1. drwxr-xr-x   - hadoop supergroup          0 2016-09-30 06:30 /user/hadoop/input

3. 离开hadoop的安全模式
  1. hadoop dfsadmin -safemode leave
说明:
hadpoop安全模式相关命令 :
  1. hadoop dfsadmin -safemode enter/leave/get/wait
hadoop的hdfs系统在安全模式下只能进行“读”操作!不能进行文件等的删除、创建、更新操作。


4. 将数据从linux文件系统复制到hdfs分布式文件系统中的input文件夹中;
  1. hadoop fs -put /home/hadoop/hadoop-env/hadoop-1.2.1/test/* input

5. 执行示例程序:
  1. hadoop jar /home/hadoop/hadoop-env/hadoop-1.2.1/hadoop-examples-1.2.1.jar wordcount input output
说明:

  • hadoop jar:执行“jar”命令
  • /home/hadoop/hadoop-env/hadoop-1.2.1/hadoop-examples-1.2.1.jar:wordcount所在的jar包
  • wordcount:程序主函数名
  • input output:输入输出文件夹


6. 查看执行结果:
  1. hadoop fs -ls
结果:可以看到多了文件夹output

  1. drwxr-xr-x   - hadoop supergroup          0 2016-09-30 06:53 /user/hadoop/input
  2. drwxr-xr-x   - hadoop supergroup          0 2016-09-30 06:56 /user/hadoop/output
查看输出结果:

  1. hadoop dfs -cat output/*
可以看到执行结果:

  1. ......
  2. Summary    1
  3. The    1
  4. This    2
  5. Trap    1
  6. at    4
  7. by    1
  8. client    1
  9. counts    1
  10. ......
查看web界面,可以看到刚才的运行结果


7. 关闭hadoop所有进程
  1. cd /home/hadoop/hadoop-env/hadoop-1.2.1/bin/
  2. ./stop-all.sh

回到顶部

七、参考链接

官方文档:http://hadoop.apache.org/docs/r1.2.1/single_node_setup.html 
参考文档:http://blog.csdn.net/zolalad/article/details/11472207   (亲自验证,可行)

来自为知笔记(Wiz)

【Hadoop环境搭建】Centos6.8搭建hadoop伪分布模式相关推荐

  1. windows搭建hadoop环境(解决HADOOP_HOME and hadoop.home.dir are unset)

    一.软件安装 1.JDK1.8 链接:https://pan.baidu.com/s/1jqqWb-3JNMDW3DbvibYlJQ?pwd=agoi 提取码:agoi 2.hadoop-3.1.3版 ...

  2. 三、Hadoop运行模式(本地模式、伪分布模式)

    上篇博客介绍了Linux下搭建Hadoop运行环境,本篇主要介绍Hadoop的本地运行模式和伪分布式模式,关注专栏<破茧成蝶--大数据篇>查看相关系列的文章~ 目录 一.本地模式 1.1 ...

  3. Hadoop环境搭建--Docker完全分布式部署Hadoop环境(菜鸟采坑吐血整理)

    系统:Centos 7,内核版本3.10 本文介绍如何从0利用Docker搭建Hadoop环境,制作的镜像文件已经分享,也可以直接使用制作好的镜像文件. 一.宿主机准备工作 0.宿主机(Centos7 ...

  4. hadoop环境搭建(详解)

    hadoop 环境搭建 引言: 随着人工智能和大数据的热潮的到来,大数据变得越来越火了,坏蛋哥的信念就是致力于大数据的发展和进步,希望能为大数据的发展和推广尽一份绵薄之力.如果要做大数据,那么大数据相 ...

  5. Ubuntu18.04+Docker+Hadoop+Spark分布式集群搭建

    题前记:因为课程需求,下面将搭建过程用学术论文的格式写.(其实我并不想写的,没办法,学习作业嘛QAQ...) 我的联系方式:630056108 文章目录 Docker上的Hadoop大数据平台搭建与测 ...

  6. Hadoop全分布式集群搭建(全网最详细,保姆级教程)

    在上一篇Hadoop环境搭建(全网最详细,保姆级教程)中已经搭建好了一个单机Hadoop环境,接下来搭建全分布式Hadoop集群 首先对Hadoop全分布示集群进行简单介绍和规划 一个集群由一个主机, ...

  7. Hadoop伪分布模式安装

    Hadoop伪分布模式安装 Hadoop的运行模式分为3种: 本地运行模式,伪分布运行模式,完全分布运行模式. (1)本地模式(local mode) 这种运行模式在一台单机上运行,没有HDFS分布式 ...

  8. hadoop环境搭建之伪分布集群环境搭建(单节点)

    首先,尼玛哥是一名研究生,可以说很多学习的知识都是来源于同门师兄弟,本着将自己学习到的东西以博客的形式分享到网络上,不仅仅可以让自己回顾,也可以帮助需要学习的小伙伴们,供大家一同学习. 首先,hado ...

  9. Hadoop学习总结(3)——Hadoop伪分布式环境搭建

    一.Hadoop运行模式 Local (Standalone) Mode 本地模式 适用于开发人员测试Debug 使用本地文件系统 Pseudo-Distributed Mode 伪分布式模式 适用于 ...

最新文章

  1. Git的学习与使用(一)——Git 与 SVN 区别
  2. Android 软键盘的显示和隐藏,这样操作就对了
  3. java应用的优化【转】
  4. 四级计算机网络考试大纲,2017年全国计算机等级考试四级计算机网络考试大纲...
  5. python爬虫企业级技术点_Python爬虫必备技术点(一)
  6. 【Linux导论】Linux引导流程(The Boot Process)
  7. hibernate VS mybatis
  8. 如何全局自动化注册异步组件?
  9. 回归模型的score得分为负_逻辑回归评分卡实现和评估
  10. Python Tricks(十五)—— repeat(字符串重复)
  11. python使用dbm持久字典详解
  12. 计算机语言排行之我见
  13. 接收蓝牙信号并发送到云端服务器,蓝牙如何可以与云服务器连接
  14. HTML 语法教学之连结标签
  15. 怎样用CorelDRAW中透镜效果制作镂空球体
  16. outlook 禁用不安全_在Outlook 2007中禁用即时搜索
  17. 杰奇linux伪静态,nginx 杰奇 nginx 伪静态规则
  18. 数据源的配置简单介绍
  19. c语言去除字符串的空格,C语言实现去除字符串中空格
  20. crypto lib

热门文章

  1. 从动态表单得到的一些思考
  2. Linux进程学习(孤儿进程和守护进程)
  3. Adobe下周将推新补丁和新的更新模式
  4. CCNP精粹系列之四----OSPF(open short path first)
  5. 问题三十六:ray tracing中的Inverse Mapping(1)——球面Inverse Mapping
  6. 5.7(财务应用程序:计算将来的程序)
  7. 大数据分析有哪些分析模型
  8. 工业大数据发展面临四方面挑战
  9. TypeScript笔记(3)—— 使用WebPack工具
  10. 12306能删候补订单记录_2019最新火车候补购票十大问题