hadoop分布式环境搭建

准备三台centos虚拟机 。(master,slave1,slave2)

(hadoop、jdk文件链接:https://pan.baidu.com/s/1wal1CSF1oO2h4dkSbceODg 提取码:4zra)

前四步可参考****hadoop伪分布式环境搭建详解-CSDN博客********

1.修改主机名,设置ip与主机的映射关系

Kotlin 复制代码
hostname //查看主机名
vim /etc/hostname //更改主机名
vim /etc/hosts  //将127.0.0.1后面的主机名更改为本机主机名,并在文件中写入三台机器的ip与主机名的映射关系
reboot //重启服务器

(文件的后三行在三台机器上都要存在且保持一致)

2.在master机器上创建/usr/apps、/usr/apps/dist-hadoop,将jdk解压至/usr/apps,hadoop解压至/usr/apps/dist-hadoop下(路径不要随便设,否则和第四步的配置文件对应不上)

Kotlin 复制代码
mkdir /usr/apps 
mkdir /usr/apps/dist-hadoop
Kotlin 复制代码
tar -zxf jdk-8u201-linux-x64.tar.gz -C /usr/apps/
tar -zxvf hadoop-2.7.1.tar.gz -C /usr/apps/dist-hadoop/ //-zxvf可以打印解压的东西

3.在master设置jdk,hadoop的环境变量

vim 编辑/etc/profile文件

添加下列语句(赋值时不要有空格,图中有空格)

Kotlin 复制代码
export JAVA_HOME=/usr/apps/jdk1.8.0_201
export PATH=$PATH:$JAVA_HOME/bin
export HADOOP_HOME=/usr/apps/dist-hadoop/hadoop-2.7.1
export PATH=$PATH:$HADOOP_HOME/bin

保存退出。

Kotlin 复制代码
source /etc/profile //重新加载该文件
java -version //查看jdk版本,检查环境是否设置成功

4.在master机器上dist-hadoop/hadoop-2.7.1/etc/hadoop目录下修改以下六个配置文件

①slaves

vim 编辑slaves文件,加入节点的主机名

slave1

slave2

②hadoop-env.sh

编辑/etc/hadoop/hadoop-env.sh文件,将jdk路径导入

Kotlin 复制代码
[root@master data]# cd /usr/apps/hadoop-2.7.1/
[root@master hadoop-2.7.1]# cd /etc/hadoop
[root@master hadoop]# vim hadoop-env.sh

③core-site.xml

Kotlin 复制代码
<!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 --> 
<property> 
<name>fs.defaultFS</name> 
<!-- 指定了客户端访问的主机名"master",则该主机的hadoop就是namenode节点了--> <value>hdfs://master:9000</value> 
</property> 
<!-- 指定hadoop运行时产生文件的存储目录 --> 
<property> 
<name>hadoop.tmp.dir</name> 
<value>/usr/apps/dist-hadoop/hadoop-2.7.1/data/</value> 
</property>
<property> 
<name>hadoop.http.staticuser.user</name> 
<value>root</value> 
<description> 网页界面访问数据使用的用户名</description> 
</property>

④hdfs-site.xml

Kotlin 复制代码
<!-- 指定HDFS副本的数量 --> 
<property> 
<name>dfs.replication</name> 
<value>2</value> 
</property> 
<property> 
<name>dfs.namenode.name.dir</name> 
<value>file:///usr/apps/dist-hadoop/hadoop-2.7.1/data/dfs/nn/name</value> 
<description>NN使用的元数据保存</description> 
</property>
<property> 
<name>dfs.datanode.data.dir</name> 
<value>/usr/apps/dist-hadoop/hadoop-2.7.1/data/</value> 
<description>DN使用的数据保存</description> 
</property> 
<property> 
<name>dfs.namenode.edits.dir</name> 
<value>file:///usr/apps/dist-hadoop/hadoop-2.7.1/data/dfs/nn/edits</value> <description>edits文件的存储路径</description>
<property> 
<name>dfs.namenode.checkpoint.edits.dir</name> 
<value>/usr/apps/dist-hadoop/hadoop-2.7.1/data/dfs/snn/edits</value> <description>SecondaryNameNode在文件系统中存储用于合并的临时edits文件的目录</description> </property> 
<property> 
<name>dfs.namenode.secondary.http-address</name> 
<value>master:50090</value> 
<description>secondarynamenode提供网络服务的端口和地址</description> 
</property> </property><property> <name>dfs.permissions</name> <value>false</value> <description>文件操作时的权限检查标识</description> 
</property> 
<property> 
<name>dfs.namenode.http-address</name> 
<value>master:50070</value> 
<description>namenode提供网络服务的端口和地址</description> 
</property>

⑤mapred-site.xml

先将mapred-site.xml.template复制到 mapred-site.xml中

再进入mapred-site.xml编辑

Kotlin 复制代码
 <!-- 指定mr运行在yarn上 --> 
<property> 
<name>mapreduce.framework.name</name> 
<value>yarn</value> 
</property> 
<property> 
<name>mapreduce.jobhistory.address</name> 
<value>master:10020</value> 
<description>MapReduce的JobHistoryserver的IP和端口</description> 
</property>
<property> 
<name>mapreduce.jobhistory.webapp.address</name> 
<value>master:19888</value> 
<description>MapReduce的JobHistoryserver在web端查看的地址</description> 
</property>
<property> 
<name>mapreduce.job.ubertask.enable</name> 
<value>true</value> 
<description>是否开启小作业优化</description> 
</property>

⑥yarn-site.xml

Kotlin 复制代码
<!-- 指定YARN的老大(ResourceManager)的地址 --> 
<property> 
<name>yarn.resourcemanager.hostname</name> 
<value>master</value> 
</property> 
<!-- reducer获取数据的方式 --> 
<property> 
<name>yarn.nodemanager.aux-services</name> 
<value>mapreduce_shuffle</value> 
</property>
<property> 
<name>yarn.log-aggregation-enable</name> 
<value>false</value> 
<description>是否启用日志聚合功能,日志聚合开启后保存到HDFS上</description> 
</property> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> 
<description>聚合后的日志在HDFS上保存多长时间,单位为s </description> 
</property>

5.在master上配置三台机器的免密登陆

Kotlin 复制代码
[root@master hadoop-2.7.1]# ssh-keygen -t rsa  //在hadoop目录下生成密钥对
[root@master hadoop-2.7.1]# find / -name .ssh //找到密钥对的位置

拷贝秘钥。

Kotlin 复制代码
[root@master ~]# cd /root/.ssh/
[root@master .ssh]# ssh-copy-id master
[root@master .ssh]# ssh-copy-id slave1
[root@master .ssh]# ssh-copy-id slave2

6.在master上将jdk,dist-hadoop,/etc/profile文件拷贝至其他两台机器(slave1,slave2)

Kotlin 复制代码
scp -r /usr/apps/jdk1.8.0_201 slave1:/usr/apps/jdk1.8.0_201
scp -r /usr/apps/jdk1.8.0_201 slave2:/usr/apps/jdk1.8.0_201
Kotlin 复制代码
scp -r dist-hadoop/ slave1:/usr/apps/
scp -r dist-hadoop/ slave2:/usr/apps/
Kotlin 复制代码
scp -r /etc/profile slave1:/etc/profile
scp -r /etc/profile slave2:/etc/profile

(拷贝的时候在其他两台机器的jdk和hadoop的路径可能不对,此时进入 /etc/profile修改正确即可

并在slave1和slave2上重载/etc/profile文件

Kotlin 复制代码
source /etc/profile

7.格式化namenode

Kotlin 复制代码
[root@master hadoop-2.7.1]# hadoop namenode -format

8.master上启动dfs.sh,yarn.sh文件

Kotlin 复制代码
sbin/start-dfs.sh
sbin/start-yarn.sh

搭建成功!

相关推荐
IT研究室6 分钟前
最新大数据毕业设计选题推荐-基于大数据的台北市住宅价格数据可视化分析-大数据-Spark-Hadoop-Bigdata
大数据·信息可视化·课程设计
starzy19907 分钟前
Flink基础之Flink应用场景及特点优势:四大场景与核心优势
大数据·flink
招财小梗9 分钟前
沈阳AI企业咨询可定制数字化方案吗?
大数据·人工智能·python
其实防守也摸鱼10 分钟前
教育信息技术应用创新---基础软件信息赛(题库)
大数据·运维·人工智能·web安全·自动化
無a伟11 分钟前
RabbitMQ :与AMQP的关系、核心组件、交换机类型
分布式·rabbitmq
TDengine (老段)23 分钟前
TDengine 错误处理 — 错误码、异常传播、故障恢复
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
fastjson_40 分钟前
Hive 自定义函数
数据仓库·hive·hadoop
ACP广源盛139246256731 小时前
M6/M5 Pro Mac mini 端侧 AI 爆发@ACP#YLB3118 存储扩展芯片在本地 AI 服务中的机会与落地场景
大数据·网络·数据库·人工智能·嵌入式硬件·macos
IT研究室1 小时前
最新大数据毕业设计选题推荐-基于大数据的水质多指标关联分析与可视化的设计与实现-大数据-Spark-Hadoop-Bigdata
大数据·spark·课程设计
故七月1 小时前
产业观察|从 9 月行业数据看西南市场 GEO 落地现状与发展路径
大数据·人工智能