Hadoop环境搭建

xiaoxiao2021-02-28  23

本文主要是从0开始搭建Hadoop伪分布,涉及到的知识点:

VMware创建RetHat Linux虚拟机防火墙免密码登陆本地模式伪分布模式全分布模式

准备工作

在正式搭建之前,有两件事要做:

下载一个VMware12并安装先下一个RetHat Linux的iso文件,可以前往RetHat官网下载

开始虚拟机的创建和安装:

虚拟机的创建

首先在左侧我的计算机列表处右击选择创建虚拟机,然后就是按照下面我截图的步骤来做就可以了。

虚拟机的安装

在安装完成之后点击Reboot重启。

输入账号、密码即可使用。

虚拟机的Hadoop环境配置

在Linux的root目录下新建tools、training、temp目录,tools专门防止安装包、training专门放置安装的软件包、temp是一些临时文件

在正式的配置Hadoop的环境之前,我们需要先做一些其它的配置如下:

关闭防火墙

(1)查看防火墙的状态:systemctl status firewalld.service

(2)关闭防火墙: systemctl stop firewalld.service

(3)禁用防火墙(永久):systemctl disable firewalld.service

设置主机名(配置文件,目录为:/etc/hosts)

通过vi编辑器来修改配置文件,打开文件命令为:vi /etc/hosts,将ip地址和主机名写入文件并保存,格式如下:

192.168.171.113 bigdata113

安装常用软件(这些包都是事先下好的,使用WinScp上传到Linux上的)

安装Java的JDK

tar -zxvf jdk-8u144-linux-x64.tar.gz -C ~/training/ 设置环境变量:vi ~/.bash_profile JAVA_HOME=/root/training/jdk1.8.0_144 export JAVA_HOME PATH=$JAVA_HOME/bin:$PATH export PATH 生效环境变量: source ~/.bash_profile

安装tree命令,安装包是以.rpm结尾

//i表示install vh表示安装时显示进度 rpm -ivh tree-1.6.0-10.el7.x86_64.rpm tree -d -L 2:-d表示只显示目录;-L表示目录的层数

Hadoop的安装和配置

首先安装Hadoop

tar -zxvf hadoop-2.7.3.tar.gz -C ~/training/

设置环境变量:vi ~/.bash_progile

HADOOP_HOME=/root/training/hadoop-2.7.3 export HADOOP_HOME PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH export PATH

使环境变量生效

source ~/.bash_profile

下面就是开始Hadoop的配置,Hadoop的话一共有3种模式,分别是本地模式、伪分布模式、全分布模式,下面我们会一个个来进行配置。

本地模式

本地模式的特点:一台Linux,没有HDFS,只能测试MapReduce程序(本地数据:Linux的文件)

配置:hadoop-env.sh (在/root/training/hadoop-2.7.3/etc/hadoop目录下)

​ 26行 export JAVA_HOME=/root/training/jdk1.8.0_144

现在Hadoop的本地模式我们就应经配置好了,我们在根目录下的temp中新建一个data.txt文件,内容为:

I love Beijing I love China Beijing is the capital of China

然后使用Hadoop提供的example jar来测试计数程序,具体如下:

example: /root/training/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount ~/temp/data.txt ~/temp/mr/wc1

以下就是进行wordcount的结果:

伪分布模式

伪分布模式的特点:一台Linux,在单机上,模拟一个分布式的环境,具备Hadoop的所有功能。一般来说,数据块冗余度和数据结点的数量是一样的。最大不要超过3。

配置:

hdfs-site.xml <!--数据块的冗余度,默认是3--> <property> <name>dfs.replication</name> <value>1</value> </property> <!--是否开启HDFS的权限检查,默认:true--> <!-- <property> <name>dfs.permissions</name> <value>false</value> </property> --> core-site.xml <!--NameNode的地址,9000是RPC的通信端口--> <property> <name>fs.defaultFS</name> <value>hdfs://bigdata113:9000</value> </property> <!--HDFS数据保存的目录,默认是Linux的tmp目录。Linux的tmp目录重新之后会清空--> <property> <name>hadoop.tmp.dir</name> <value>/root/training/hadoop-2.7.3/tmp</value> </property> mapred-site.xml(注意:本身是没有这个文件的,只有一个 mapred-site.xml.template,我们主要复制一份即可) <!--MR程序运行的容器是Yarn--> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> yarn-site.xml <!--Yarn的主节点ResourceManager的地址--> <property> <name>yarn.resourcemanager.hostname</name> <value>bigdata113</value> </property> <!--NodeManager运行MR任务的方式--> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>

配置完之后, 对NameNode进行格式化: hdfs namenode -format,输出的日志包含以下成功标记即可:

Storage directory /root/training/hadoop-2.7.3/tmp/dfs/name has been successfully formatted.

现在就可以启动hadoop了,命令是:

启动:start-all.sh (等价于start-dfs.sh + start-yarn.sh)

下图是启动hadoop之前运行的进程情况:

以下是启动之后运行的进程情况:

可以看到NameNode、DataNode、SecondaryNameNode等都启动成功了。

注意:一旦配置了伪分布模式,进行分析的数据必须都是hdfs目录,我们需要创建hdfs目录,并把linux下的目录文件拷贝进去。

我们还是以data.txt为例,首先创建hdfs的文件目录input,并将linux目录下的data.txt拷贝一份到input下,命令如下:

hdfs dfs -mkdir /inputhdfs dfs -mkdir /output hdfs dfs -put ~/temp/data.txt /input

拷贝完成之后运行如下命令(必须在MapReduce目录下执行,否则报错):

hadoop jar hadoop-mapreduce-examples-2.7.3.jar wordcount /input/data.txt ~/output/mr/wc1

执行成功之后查看结果:

hdfs dfs -cat /output/0502/wc1/part-t-00000

发现和本地模式下的一样,这就对了。不过小伙伴在启动伪分布的时候是不是遇到过这个问题:

我们启动一次hadoop竟然要输入如此多次密码,很明显这是不科学的,那么要如何处理呢?答案是免密码登陆,免密码登陆的原理是非对称加密算法,具体的流程请看下图:

下面是配置的命令:

使用非对称加密算法生成密钥对:ssh-keygen -t rsa

把自己的公钥给其他的服务器(因为当前是伪分布,所以给自己即可):ssh-copy-id -i .ssh/id_rsa.pub root@bigdata113

现在我们重新使用start-all.sh命令启动Hadoop组件,流程如下:

很明显,不用去重复的输入密码了,省去了我们很多的时间。

全分布模式

全分布模式特点:正式的分布环境,用于生产。

其实全分布模式和伪分布模式的配置大部分都是相同的,只有少许差别,下面我们列出流程:

关闭防火墙

安装JDK

配置主机名 vi /etc/hosts(需要把三台主机都配置进去)

192.168.171.112 bigdata112 192.168.171.113 bigdata113 192.168.171.114 bigdata114

配置免密码登陆:两两之间的免密码登陆

每台机器产生自己的公钥和私钥ssh-keygen -t rsa

每台机器都把自己的公钥给别人一份(含自己)

​ ssh-copy-id -i .ssh/id_rsa.pub root@bigdata112

​ ssh-copy-id -i .ssh/id_rsa.pub root@bigdata113

​ ssh-copy-id -i .ssh/id_rsa.pub root@bigdata114

保证每台机器的时间同步。

​ 如果时间不一样,执行MapReduce程序时可能存在问题。

​ 解决方法:使用putty中help选项下面的那个类似键盘s的图标,输入命令date -s 2018-04-15 +回车,然后下面选择要同步的服务器,最后点击send就可以了

在主节点bigdata112上配置(NameNode结点):

解压设置环境变量

解压:tar -zxvf hadoop-2.7.3.tar.gz -C ~/training/

设置环境变量:vi ~/.bash_progile

HADOOP_HOME=/root/training/hadoop-2.7.3 export HADOOP_HOME PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH export PATH

配置完成后,通过source ~/.bash_profile使其生效

修改配置文件

(1)配置:hadoop-env.sh 25行 export JAVA_HOME=/root/training/jdk1.8.0_144 (2) hdfs-site.xml(有几个从节点,冗余度配置为几) <!--数据块的冗余度,默认是3--> <property> <name>dfs.replication</name> <value>2</value> </property> (3) core-site.xml(注意/root/training/hadoop-2.7.3/tmp需要先创建再配置) <!--NameNode的地址,9000是RPC的通信端口--> <property> <name>fs.defaultFS</name> <value>hdfs://bigdata112:9000</value> </property> <!--HDFS数据保存的目录,默认是Linux的tmp目录。Linux的tmp目录重新之后会清空--> <property> <name>hadoop.tmp.dir</name> <value>/root/training/hadoop-2.7.3/tmp</value> </property> (4)mapred-site.xml <!--MR程序运行的容器是Yarn--> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> (5)yarn-site.xml <!--Yarn的主节点ResourceManager的地址--> <property> <name>yarn.resourcemanager.hostname</name> <value>bigdata112</value> </property> <!--NodeManager运行MR任务的方式--> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> (6)slaves配置从节点 vi slaves bigdata113 bigdata114 (7)格式化NameNode hdfs namenode -format

把主节点上配置好的Hadoop复制到从节点

scp -r hadoop-2.7.3/ root@bigdata113:/root/training(scp 是指网络拷贝;-r表示把指定目录下的文件及子目录都拷贝)

scp -r hadoop-2.7.3/ root@bigdata114:/root/training

在主节点上启动 start-all.sh

以上就是Hadoop环境搭建的全部内容,后面我们会从详细知识点去介绍,比如使用HDFS实现上传、下载,MapReduce的使用,HBase的使用等等,敬请期待!!

转载请注明原文地址: https://www.6miu.com/read-2628648.html

最新回复(0)