Hadoop环境搭建-单机、伪分布式、完全分布式

目录

一、单机安装

 二、伪分布式环境搭建

配置SSH免密登录

 三、完全分布式环境搭建

设置免密

修改配置文件


本文的所有配置文件,除注释部分都可直接复制粘贴。因为本文的配置文件的语言语法采用的是HTML或JAVA,注释部分可能和linux系统上的不同,因此如果直接复制粘贴记得将注释删除或调整语法。 

一、单机安装

1、安装虚拟机、操作系统(前期初步准备工作已完成)先关闭firewalld防火墙:

systemctl stop firewalld //停止防火墙
systemctl disable firewalld //关闭防火墙开机自启动
systemctl status firewalld //查看防火墙状态

2、设置主机名:

hostnamectl set-hostname master //设置主机名为master
hostname //查看主机名

3、映射主机名和IP地址:

ip add //查看IP地址
vi /etc/hosts //在文件最后一行加上IP地址和主机名
例:192... master

4、安装rz命令:

yum install -y lrzsz

5、利用rz将JDK上传至服务器:

mkdir -p /export/server //新建一个专用目录
cd /export/server //切换目录
rz
tar -zxvf /root/jdk.tar.gz //解压
mv jdk1.8.0_131/ jdk1.8 //重命名

6、配置JAVA环境

vi /etc/profile
//在文件最后加上
JAVA_HOME=/export/server/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin
    
//保存并退出后,刷新文件
source /etc/profile
//查看jdk是否安装成功,出现版本号即可
java -version

7、上传hadoop压缩包至服务器并解压:

cd /export/server
rz
tar -zxvf /root/hadoop-2.7.2.tar.gz
//配置hadoop环境变量
cd hadoop-2.7.2
pwd //显示hadoop安装路径,方便后续配置
vi /etc/profile
//在文件最后加上
HADOOP_HOME=/export/server/hadoop-2.7.2
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export JAVA_HOME HADOOP_HOME PATH
​
//保存并退出后,刷新文件
source /etc/profile
//查看hadoop是否安装成功
hadoop version

 二、伪分布式环境搭建

 搭建伪分布式前提条件:文章上面的基础hadoop、jdk环境搭建完成

which java //查看java所在位置
vi hadoop-env.sh
//将export JAVA_HOME的值修改为我们安装的JDK路径
export JAVA_HOME=/export/server/jdk1.8

进入hadoop/etc/hadoop目录:

cd /export/server/hadoop/etc/hadoop

修改core-site.xml:

vi core-site.xml

如果配置了存放临时文件则需要创建一个目录:

mkdir -p /export/server/hadoop-2.7.2/data/tmp

<configuration>
    <property>
    	<name>fs.defaultFS</name> <!--设定namenode的主机名及端口-->
    	<value>hdfs://master:9000</value>
	</property>
<!--下面的不想要,可以不写-->
    <property>
        <name>hadoop.tmp.dir</name> <!--存放临时文件的目录,不想要可以不写-->
        <value>/export/server/hadoop-2.7.2/data/tmp</value>
    </property>
</configuration>

 修改hdfs-site.xml:

vi hdfs-site.xml

<configuration>
	<property>
    	<name>dfs.replication</name>
        <value>1</value> <!--设定HDFS存储文件的副本个数,默认为3-->
    </property>
    <property>
    	<name>dfs.secondary.http.address</name> <!--SecondaryNameNode地址和端口-->
        <value>master:50070</value>
    </property>
</configuration>

修改mapred-site.xml:

这个文件是不存在的,但是有一个模板文件mapred-site.xml.template,我们将这个文件改名为mapred-site.xml,然后进行修改:

mv  mapred-site.xml.template mapred-site.xml

vi mapred-site.xml

<configuration>
	<property>
    	<name>mapreduce.framework.name</name>
        <value>yarn</value> <!--告诉hadoop mapreduce运行在yarn-->
    </property>
</configuration>

修改yarn-site.xml:

vi yarn-site.xml

该文件为Yarn框架配置文件,配置ResourceManager,nodeManager的通信端口,web监视端口等

<configuration>
	<property>
    	<name>yarn.resourcemanager.hostname</name>
        <value>master</value><!--指定ResourceManger的地址-->
    </property>
    <property>
    	<name>yarn.nodemanager.aux-services</name> <!--指定NodeManager获取数据的方式的shuffle-->
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

格式化DFS:

hdfs namenode -format

如果在格式化的日志中出现succefully format就证明格式化成功

启动所有服务:start-all.sh

关闭所有服务:stop-all.sh

配置SSH免密登录

输入:

ssh-keygen -t rsa

按四次回车

建立密钥对:

cd /root/.ssh

查看:ll

私钥:id_rsa

公钥:id_rsa.pub

ssh-copy-id将本机的公钥复制到远程机器的authorized_keys文件中,这里是伪分布式,只有一台机器,所以仍然是master然后需要输入master的root用户密码:

ssh-copy-id master

可以查看:记录多台机器的公钥,让机器之间使用ssh不需要用户名和密码:

#more authorized_keys

可以看到authorized_keys中的内容就是id_rsa.pub的内容,再次使用start-dfs.sh和start-yarn.sh,发现不需要输入密码了,实现免密登录。

 三、完全分布式环境搭建

1、先将可以联网的单机,克隆三台:master、slave1、slave2

没有创建单机,直接搭建完全分布式的。可以创建三台虚拟机,然后配置好基础的hadoop、jdk环境,效果等于克隆三台单机。单机配置可看上文

2、把每台的文件都修改一下:

vi /etc/sysconfig/network-scripts/ifcfg-ens33

按规划设置各节点IP,网段取决于自己的电脑。为方便记忆,建议master节点IP尾数用200,slave用201,slave用202

//将UUID删除
//修改IPADDR=网段
例:
master的IPADDR=192...200
slave1的IPADDR=192...201

3、重启网络服务:systemctl restart network

4、为了方便,三台都重命名:hostnamectl set-hostname 名字

例:master主节点重命名:hostnamectl set-hostname master

如果是用远程连接工具修改,需要重新连接才会显示修改后的名字

5、修改hosts文件,在主节点映射IP地址和主机名(每个节点都要)

vi /etc/hosts
//在文件最后加上:
//主节点IP地址+ master 例:192...200 master
//从一节点IP+ slave1
//从二节点IP+ slave2

6、将配置好的hosts文件发送给两个从节点:

scp /etc/hosts slave1:/etc/hosts

scp /etc/hosts slave2:/etc/hosts

7、查看三台时间是否相同:date

如果时间不同,手动时间同步:

安装NTP服务:yum install ntp

时间同步(三台都要):ntpdate -u ntp1.aliyun.com

查看防火墙是否开启:systemctl status firewalld.service

如果开启,则关闭:systemctl stop firewalld.service

设置免密

1、删除三台机上的.ssh目录:rm -rf /root/.ssh

2、生成新密钥对(三台都要):ssh-keygen -t rsa

连按三次回车

3、切换目录,将三个节点的.ssh目录下的公钥复制到主节点(master)上(前提是你已经在主节点把/etc/hosts文件配置好并分发给了两台从节点,不然会报不知道master的错误):

cd /root/.ssh

ssh-copy-id master (三个都要)

4、查看是否复制成功(要在/root/.ssh下):

cat authorized_keys

5、在主节点上远程拷贝到两个从节点:

scp authorized_keys slave1:/root/.ssh/authorized_keys

scp authorized_keys slave2:/root/.ssh/authorized_keys

在执行过程中输入yes并输入密码

验证:ssh slave1 可以切换

第五点也可以直接将master的/root/.ssh拷贝到另外两台主机上

scp -r /root/.ssh slave1:/root

scp -r /root/.ssh slave2:/root

修改配置文件

先在主节点创建三个文件夹:

mkdir -p /export/server/tmp(不配置文件可以不创)

mkdir -p /export/server/hdfs/name(不配置文件可以不创)

mkdir -p /export/server/hdfs/data(不配置文件可以不创)

切换目录:cd /export/server/hadoop-2.7.2/etc/hadoop

修改:vi core-site.xml

<property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
<!--HDFS的URI,设定namenode的主机名及端口-->
</property>

<!--下面可以不配-->
<property>
        <name>hadoop.tmp.dir</name>
        <value>/export/server/tmp</value>
<!--节点上本地的hadoop临时文件夹,之前一定要先建立好-->
</property>

先查看自己的java所在,方便后续配置:which java

修改文件:vi hadoop-env.sh

//大概25行
//export JAVA_HOME=/export/server/jdk1.8 (写自己jdk的存放目录)

修改:vi mapred-env.sh

将java路径写上:

//export JAVA_HOME=/export/server/jdk1.8

修改:vi yarn-env.sh

//将java路径写上
//export JAVA_HOME=/export/server/jdk.18

将文件改名:mv mapred-site.xml.template mapred-site.xml

修改:vi mapred-site.xml

<property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
<!--指定mapreduce使用yarn框架-->
</property>

 修改:vi yarn-site.xml

<property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
<!--指定resourcemanager所在的hostname,即指定yarn的老大即ResourceManger的地址-->
</property>

<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
<!--NodeManager上运行的附属服务。指定NodeManager获取数据的方式是shuffle需配置成mapreduce_shuffle,才可运行MapReduce程序-->
</property>

 修改:vi hdfs-site.xml(默认配好,可以不配)

<property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/export/server/hdfs/name</value>
<!--namenode上存储hdfs名字空间元数据-->
</property>

<property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/export/server/hdfs/data</value>
<!--datanode上数据块的物理存储位置-->
</property>

<property>
        <name>dfs.replication</name>
        <value>2</value>
<!--副本个数,默认是3,应小于datanode机器数量-->
</property>

vi slaves

将两个从节点的名字写到最后:

slave1

slave2

将文件发送给两个从节点:

scp -r /export/server/hadoop-2.7.2/etc/hadoop slave1:/export/server/hadoop-2.7.2/etc

scp -r /export/server/hadoop-2.7.2/etc/hadoop slave2:/export/server/hadoop-2.7.2/etc

格式化文件:

hdfs namenode -format

启动集群,主节点有4个,从节点有3个:

start-all.sh

 

 

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
LinuxLinuxLinuxLinuxLinux5.65.65.6企业版 企业版 下成功搭建 下成功搭建 下成功搭建 HadoopHadoopHadoopHadoopHadoopHadoop分布 测试环境。本次在一台服务 测试环境。本次在一台服务 测试环境。本次在一台服务 测试环境。本次在一台服务 测试环境。本次在一台服务 测试环境。本次在一台服务 测试环境。本次在一台服务 测试环境。本次在一台服务 测试环境。本次在一台服务 器上进行分布式搭建。 器上进行分布式搭建。 器上进行分布式搭建。 器上进行分布式搭建。 器上进行分布式搭建。 器上进行分布式搭建Hadoop Hadoop Hadoop Hadoop Hadoop Hadoop Hadoop 分布式模是在单机上拟 分布式模是在单机上拟 分布式模是在单机上拟 分布式模是在单机上拟 分布式模是在单机上拟 分布式模是在单机上拟 分布式模是在单机上拟 Hadoop Hadoop Hadoop Hadoop Hadoop Hadoop Hadoop 分布式分布式单机上的分布式并不是真正,而使用线程模拟。 单机上的分布式并不是真正,而使用线程模拟。 单机上的分布式并不是真正,而使用线程模拟。 单机上的分布式并不是真正,而使用线程模拟。 单机上的分布式并不是真正,而使用线程模拟。 单机上的分布式并不是真正,而使用线程模拟。 单机上的分布式并不是真正,而使用线程模拟。 单机上的分布式并不是真正,而使用线程模拟。 单机上的分布式并不是真正,而使用线程模拟。 单机上的分布式并不是真正,而使用线程模拟。 单机上的分布式并不是真正,而使用线程模拟。 单机上的分布式并不是真正,而使用线程模拟。 单机上的分布式并不是真正,而使用线程模拟。 单机上的分布式并不是真正,而使用线程模拟。 单机上的分布式并不是真正,而使用线程模拟。 单机上的分布式并不是真正,而使用线程模拟。 单机上的分布式并不是真正,而使用线程模拟。 Hadoop Hadoop Hadoop Hadoop Hadoop Hadoop Hadoop 本身 是无法区分布式 和的,两种配置也很相似唯一不同地方是无法区分布式 和的,两种配置也很相似唯一不同地方是无法区分布式 和的,两种配置也很相似唯一不同地方是无法区分布式 和的,两种配置也很相似唯一不同地方是无法区分布式 和的,两种配置也很相似唯一不同地方是无法区分布式 和的,两种配置也很相似唯一不同地方是无法区分布式 和的,两种配置也很相似唯一不同地方是无法区分布式 和的,两种配置也很相似唯一不同地方是无法区分布式 和的,两种配置也很相似唯一不同地方是无法区分布式 和的,两种配置也很相似唯一不同地方是无法区分布式 和的,两种配置也很相似唯一不同地方是无法区分布式 和的,两种配置也很相似唯一不同地方是无法区分布式 和的,两种配置也很相似唯一不同地方是无法区分布式 和的,两种配置也很相似唯一不同地方是无法区分布式 和的,两种配置也很相似唯一不同地方是无法区分布式 和的,两种配置也很相似唯一不同地方是无法区分布式 和的,两种配置也很相似唯一不同地方是无法区分布式 和的,两种配置也很相似唯一不同地方是无法区分布式 和的,两种配置也很相似唯一不同地方是无法区分布式 和的,两种配置也很相似唯一不同地方是无法区分布式 和的,两种配置也很相似唯一不同地方是无法区分布式 和的,两种配置也很相似唯一不同地方是在单机器上配置,数据节点和名字均一个。 是在单机器上配置,数据节点和名字均一个。 是在单机器上配置,数据节点和名字均一个。 是

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

遇安.YuAn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值