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.rpm,hadoop-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 。可以达到不重启或 重启都是主机名都是同一个的目的
2.配置hosts文件 执行:vim /etc/hosts
3.配置免秘钥登录
在hadoop01节点执行: 执行:ssh-****** 然后一直回车
生成节点的公钥和私钥,生成的文件会自动放在/root/.ssh目录下
然后把公钥发往远程机器,比如hadoop01向hadoop01发送 执行:ssh-copy-id [email protected] 此时,hadoop02节点就是把收到的hadoop秘钥保存在 /root/.ssh/authorized_keys 这个文件里,这个文件相当于访问白名单,凡是在此白明白存储的 秘钥对应的机器,登录时都是免密码登录的。 当hadoop01再次通过ssh远程登录hadoop01时,发现不需要输入密码了。
在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 路径
然后执行:source hadoop-env.sh 让配置立即生效
8.修改core-site.xml 在etc/hadoop目录下 执行:vim core-site.xml 配置如下:
<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 配置如下:
<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 配置如下:
<configuration>
<property> <!--指定mapreduce运行在yarn上-->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration> yarn是资源协调工具,
11.修改yarn-site.xml 配置如下:
<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文件
13.配置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,证明格式化成功
切换到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
然后执行source hadoop-env.sh 使配置立即生效
执行:start-yarn.sh 启动yarn相关的服务
在浏览器访问: 192.168.234.21:50070来访问hadoop的管理页面
Hadoop的启动
或在sbin目录下执行: sh start-all.sh 或sh stop-all.sh 启动或关闭hadoop