Hadoop基础模式搭建
一、关于Hadoop
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。
HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
Hadoop解决哪些问题?
海量数据需要及时分析和处理
海量数据需要深入分析和挖掘
数据需要长期保存
海量数据存储的问题:
磁盘IO称为一种瓶颈,而非CPU资源
网络带宽是一种稀缺资源
硬件故障成为影响稳定的一大因素
HDFS采用master/slave架构
Hadoop的三种运行模式 :
独立(本地)运行模式:无需任何守护进程,所有的程序都运行在同一个JVM上执行。在独立模式下调试MR程序非常高效方便。所以一般该模式主要是在学习或者开发阶段调试使用 。
伪分布式模式: Hadoop守护进程运行在本地机器上,模拟一个小规模的集群,换句话说,可以配置一台机器的Hadoop集群,伪分布式是完全分布式的一个特例。
完全分布式模式:Hadoop守护进程运行在一个集群上。
HDFS的主要模块
NameNode:
功能:是整个文件系统的管理节点。维护整个文件系统的文件目录数,文件/目录的源数据和每个文件对应的数据快列表。用于接受用户的请求。
DataNode:
是HA(高可用性)的一个解决方案,是备用镜像,但不支持热设备
注意:在本地模式下,将使用本地文件系统和本地MapReduce运行器。在分布式模式下,将启动HDFS和YARN守护进程。
二、hadoop本地模式
首先下载jdk和hadoop包。
hadoop-2.6.0.tar.gz
jdk-8u144-linux-x64.tar.gz
百度云:https://pan.baidu.com/s/15QXS1ScOG1kOHBOCalgq7Q
提取码:1dc7上传包到虚拟机并解压
使用ftp软件连接虚拟机,将下载的jdk和hadoop包上传到虚拟机中。
将两个包解压到/root/hadoop_sft
1
2tar -zxvf hadoop-2.6.0.tar.gz -C /root/hadoop_sft
tar -zxvf jdk-8u144-linux-x64.tar.gz -C /root/hadoop_sft配置信息
本地模式有2个文件修改配置
修改 .bash_profile
1
vim ~/.bash_profile
修改如下:
1
2
3
4
5
6
7
8
9
10
11JAVA_HOME=/root/hadoop_sft/jdk1.8.0_144
export JAVA_HOME
HADOOP_HOME=/root/hadoop_sft/hadoop-2.6.0
export HADOOP_HOME
PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export PATH接下来使修改生效:
1
source ~/.bash_profile
修改hadoop-env.sh
1
2cd /root/hadoop_sft/hadoop-2.6.0/
vim etc/hadoop/hadoop-env.sh修改第25行export JAVA_HOME=${JAVA_HOME},将${JAVA_HOME}替换成jdk的绝对路径
1
export JAVA_HOME=/root/hadoop_sft/jdk1.8.0_144
进行测试
先在/root/下建一个t1.txt 文本文件,往里面放入包含不同单词。
cd切换到mapreduce目录下
1
cd /root/hadoop_sft/hadoop-2.6.0/share/hadoop/mapreduce/
执行jar包里的wordcount程序
1
hadoop jar hadoop-mapreduce-examples-2.6.0.jar wordcount /root/t1.txt ./out
out目录生成part-r-00000和_SUCCESS两个文件,进入./out查看,part-r-00000文件可以看到分词情况
1
2cd ./out
cat part-r-00000
三、伪分布式模式
伪分布式模式在本地模式的基础上进行配置,本地模式已经做完一,二步,所有我们直接从第三步开始配置。
配置信息
本地模式有6个文件修改配置
修改 .bash_profile(本地模式改过了此处忽略)
1
vim ~/.bash_profile
修改如下:
1
2
3
4
5
6
7
8
9
10
11JAVA_HOME=/root/hadoop_sft/jdk1.8.0_144
export JAVA_HOME
HADOOP_HOME=/root/hadoop_sft/hadoop-2.6.0
export HADOOP_HOME
PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export PATH接下来使修改生效:
1
source ~/.bash_profile
修改hadoop-env.sh(本地模式改过了此处忽略)
1
2cd /root/hadoop_sft/hadoop-2.6.0/
vim etc/hadoop/hadoop-env.sh修改第25行export JAVA_HOME=${JAVA_HOME},将${JAVA_HOME}替换成jdk的绝对路径
1
export JAVA_HOME=/root/hadoop_sft/jdk1.8.0_144
修改hdfs-site.xml
1
2cd /root/hadoop_sft/hadoop-2.6.0/
vim etc/hadoop/hdfs-site.xml在
之间增加配置信息 1
2
3
4
5
6
7
8
9<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
<.property>修改core-site.xml
1
2
3
4cd /root/hadoop_sft/hadoop-2.6.0/
先在hadoop-2.6.0目录中创建tmp文件夹
mkdir tmp
vim etc/hadoop/core-site.xml在
之间增加配置信息 1
2
3
4
5
6
7
8
9<property>
<name>fs.defaultFS</name>
<value>hdfs://(本机ip):9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hadoop_sft/hadoop-2.6.0/tmp</value>
</property>修改mapred-site.xml
先将mapred-site.xml.template复制为mapred-site.xml放到同目录下,再编辑修改
1
2cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
vim etc/hadoop/mapred-site.xml在
之间增加配置信息 1
2
3
4<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>修改yarn-site.xml
1
2cd /root/hadoop_sft/hadoop-2.6.0/
vim etc/hadoop/yarn-site.xml在
之间增加配置信息 1
2
3
4
5
6
7
8<property>
<name>yarn.resourcemanager.hostname</name>
<value>ip</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
设置免密登录
生成密钥
1
2ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub测试免密登陆成功
1
ssh root@(本机ip)
Hadoop的进行初始化
1
hadoop namenode -format
启动服务
1
2
3cd /root/hadoop_sft/hadoop-2.6.0/
start-dfs.sh
start-yarn.sh进行测试
先在/root/下建一个t1.txt 文本文件,往里面放入包含不同单词。
cd切换到mapreduce目录下
1
cd /root/hadoop_sft/hadoop-2.6.0/share/hadoop/mapreduce/
执行jar包里的wordcount程序
1
hadoop jar hadoop-mapreduce-examples-2.6.0.jar wordcount /root/t1.txt ./out
out目录生成part-r-00000和_SUCCESS两个文件,进入./out查看,part-r-00000文件可以看到分词情况
1
2
3cd ./out
ls
cat part-r-00000
四、完全分布式
搭建分布式主要用三台虚拟机:hadoop01、hadoop02、hadoop03,所以我们将第一台虚拟机再克隆出两台,配置NAT网络,记下三台虚拟机的IP
1 | 192.168.171.129 |
配置虚拟机的hostname
1
vim /etc/sysconfig/network
插入以下内容:
1
2NETWORKING=yes
HOSTNAME=hadoop01修改hosts文件:
1
vim /etc/hosts
添加以下内容:
1
2
3
4127.0.0.1 localhost
192.168.171.129 hadoop01
192.168.171.130 hadoop02
192.168.171.131 hadoop03需要把以上hosts配置到windows的hosts文件中,不然在windows开发时连接不上hdfs
设置免密登录
给每一台虚拟机都生成设置免密登录
生成密钥
1
2ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub测试免密登陆成功
1
ssh root@(本机ip)
在.ssh文件夹下会有id_rsa与id_rsa.pub两个文件,执行:
1
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
将公钥保存到认证文件中(认证文件名一定不能打错),最后将其余两台机器的公钥也复制进来,组成免密访问。
余下待补充