hadoop伪分布搭建

hadoop的大体架构主要分为HDFS以及MapRedure。

  • HDFS的架构
  • 主从结构

    • 主节点,只有一个:namenode

    • 从节点,有很多个:datanode 

    • namenode负责:
              接收用户的请求
              维护文件系统的目录结构
              管理文件与block之间的关系,block于datanode之间的关系  

    • datanodes负责:
              存储文件
              文件分成多个block存储在磁盘上
              保证数据安全,建立多个副本 

  • MapReduce的架构

    • 主从结构

      • 主节点,只有一个:JobTracker

      • 从节点,有很多个:TaskTrackers

      • JobTracker负责:
                接收客户提交的计算任务
                把计算任务分给TaskTrackers执行
                监控TaskTrackers的执行情况

      • TaskTrackers负责:
                执行JobTracker分配的任务

Hadoop特点扩容能力:处理数据级别容易变更;成本低:开源,普通服务器;高效率:分发任并行务;可靠性,多搞副本。Hadoop这些特点总结来源于分布式这个条件。目前来看Hadoop部署方式大概有:本地模式、集群模式、伪分布模式。下面我就用我自己搭建一个伪分布。当前系统系统:CentOS-6.5-x86_64-minimal.iso,使用软件:jdk-7u67-linux-x64.rpmhadoop-2.6.5.tar.gz

 安装模式 单机模式:不能使用HDFS,只能使用MapReduce,所以单机模式最主要的目的是在本机调试 mapreduce代码 伪分布式模式:用多个线程模拟多台真实机器,即模拟真实的分布式环境。 完全分布式模式:用多台机器(或启动多个虚拟机)来完成部署集群。


安装步骤: 0.关闭防火墙 执行:service iptables stop  这个指令关闭完防火墙后,如果重启,防火墙会重新建立,所 以,如果想重启后防火墙还关闭, 需额外执行:chkconfig iptables off


1.配置主机名


Hadoop伪分布式安装
  
1.配置主机名 执行:vim  /etc/sysconfig/network 编辑主机名 注意:主机名里不能有下滑线,或者特殊字符#$,不然会找不到主机导致无法启动 这种方式更改主机名需要重启才能永久生效,因为主机名属于内核参数。 如果不想重启,可以执行:hostname  hadoop01。但是这种更改是临时的,重启后会恢复 原主机名。 所以可以结合使用。先修改配置文件,然后执行:hostname hadoop01 。可以达到不重启或 重启都是主机名都是同一个的目的

hadoop伪分布搭建
2.配置hosts文件 执行:vim /etc/hosts

hadoop伪分布搭建
3.配置免秘钥登录
在hadoop01节点执行: 执行:ssh-****** 然后一直回车

hadoop伪分布搭建
   
生成节点的公钥和私钥,生成的文件会自动放在/root/.ssh目录下

hadoop伪分布搭建
然后把公钥发往远程机器,比如hadoop01向hadoop01发送 执行:ssh-copy-id  [email protected] 此时,hadoop02节点就是把收到的hadoop秘钥保存在 /root/.ssh/authorized_keys 这个文件里,这个文件相当于访问白名单,凡是在此白明白存储的 秘钥对应的机器,登录时都是免密码登录的。 当hadoop01再次通过ssh远程登录hadoop01时,发现不需要输入密码了。

hadoop伪分布搭建
在hadoop02节点执行上述上述步骤,让hadoop02节点连接hadoop01免密码登录

4.配置自己节点登录的免密码登录

如果是单机的伪分布式环境,节点需要登录自己节点,即hadoop01要登录hadoop01 但是此时是需要输入密码的,所以要在hadoop01节点上 执行:ssh-copy-id [email protected]


5.安装和配置jdk 执行:  vi  /etc/profile 2)在尾行添加 #set java environment JAVA_HOME=/usr/local/src/java/jdk1.7.0_51
JAVA_HOME=/usr/local/src/java/jdk1.7.0_51 PATH=$JAVA_HOME/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export JAVA_HOME PATH CLASSPATH 保存退出 3)source /etc/profile 使更改的配置立即生效 4)java -version 查看JDK版本信息。如显示1.7.0证明成功。


6.上传和解压hadoop安装包 执行:tar -xvf  hadoop……

目录说明: bin目录:命令脚本 etc/hadoop:存放hadoop的配置文件 lib目录:hadoop运行的依赖jar包 sbin目录:启动和关闭hadoop等命令都在这里 libexec目录:存放的也是hadoop命令,但一般不常用

最常用的就是bin和etc目录


7.配置hadoop-env.sh
这个文件里写的是hadoop的环境变量,主要修改hadoop的java_home路径 切换到  etc/hadoop目录 执行:vim hadoop-env.sh 修改java_home路径和hadoop_conf_dir 路径

hadoop伪分布搭建
然后执行:source hadoop-env.sh 让配置立即生效
8.修改core-site.xml 在etc/hadoop目录下 执行:vim core-site.xml 配置如下:
   hadoop伪分布搭建


<configuration> <!--用来指定hdfs的老大,namenode的地址-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop01:9000<value>
</property> <!--用来指定hadoop运行时产生文件的存放目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/software/hadoop-2.7.1/tmp</value>
</property>
</configuration> 9.修改hdfs-site .xml 配置如下:

hadoop伪分布搭建
<configuration> <!--指定hdfs保存数据副本的数量,包括自己,默认值是3--> <!--如果是伪分布模式,此值是1-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!--设置hdfs的操作权限,false表示任何用户都可以在hdfs上操作文件-->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>    
</configuration>
10.修改mapred-site.xml 这个文件初始时是没有的,有的是模板文件,mapred-site.xml.template 所以需要拷贝一份,并重命名为mapred-site.xml 执行:cp mapred-site.xml.template mapred-site.xml 配置如下:

hadoop伪分布搭建
<configuration>
<property> <!--指定mapreduce运行在yarn上-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration> yarn是资源协调工具,
11.修改yarn-site.xml 配置如下:

hadoop伪分布搭建
<configuration>
<!-- Site specific YARN configuration properties -->
<property> <!--指定yarn的老大 resoucemanager的地址-->
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>
<property> <!--NodeManager获取数据的方式-->
<name>yarn.nodemanager.aux-services</name>
   分区 Hadoop第一天 的第 15 页   
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
12.配置slaves文件

hadoop伪分布搭建
13.配置hadoop的环境变量 配置代码:

hadoop伪分布搭建
JAVA_HOME=/home/software/jdk1.8
HADOOP_HOME=/home/software/hadoop-2.7.1
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export JAVA_HOME PATH CLASSPATH HADOOP_HOME
14.格式化namenode 为什么要格式化 执行:hadoop namenode -format 如果不好使,可以重启linux 当出现:successfully,证明格式化成功
   hadoop伪分布搭建
切换到sbin目录, 执行:start-dfs.sh  启动hadoop相关的服务
!注:如果在启动时,报错:Cannot find configuration directory: /etc/hadoop 解决办法: 编辑etc/hadoop下的hadoop-env.sh 文件,添加如下配置信息: export HADOOP_CONF_DIR=/home/software/hadoop-2.7.1/etc/hadoop

hadoop伪分布搭建
然后执行source hadoop-env.sh 使配置立即生效
执行:start-yarn.sh 启动yarn相关的服务

hadoop伪分布搭建
在浏览器访问: 192.168.234.21:50070来访问hadoop的管理页面

hadoop伪分布搭建
Hadoop的启动 
或在sbin目录下执行:  sh  start-all.sh 或sh stop-all.sh 启动或关闭hadoop