03-Ubuntu18.04+Hadoop3.1.3安装配置(完全分布式)

说明

我这里实际上是把jdk和hadoop安装在了/home/wolf/opt/app/中,而非正常的/opt/app/中,所以路径可能会有点怪,所以看这篇文章的时候要时刻注意路径问题,我也非常建议把软件放在/opt/app/中(记得提前chown把权限给好),这样比较符合市面上大多数的教程的路径。

参考链接:Ububtu18.04安装Hadoop3.1.3全分布集群-持续更新问题集-腾讯云开发者社区-腾讯云

目录

说明

1.设置主机名

2.配置/etc/hosts文件

3.SSH免密登录

4.使用SSH工具把Hadoop3.1.3和jdk8的压缩包上传到虚拟机上

5.安装jdk

6.安装Hadoop 

7.测试本地运行模式

8.完全分布式搭建及运行测试


1.设置主机名

# 临时设置hostname
sudo hostname master
# 永久设置hostname
sudo vim /etc/hostname
# 填写hostname,这里填写master

重启虚拟机即应用成功,对于其他的虚拟机可以填写hostname为slave1、slave2......

2.配置/etc/hosts文件

sudo vim /etc/hosts

配置成类似这样,注意修改ip地址。

3.SSH免密登录

在主机输入

ssh master

 进行ssh登录,这时还需要密码登录。

设置SSH免密登录

exit                           # 退出刚才的 ssh localhost
# 若没有该目录,请先执行一次ssh localhost
cd ~/.ssh/                     
ssh-keygen -t rsa              # 会有提示,都按回车就可以
cat ./id_rsa.pub >> ./authorized_keys  # 加入授权方法1
# 加入授权方法2 或这种方法
ssh-copy-id -i .ssh/id_rsa.pub  wolf@192.168.199.129 

4.使用SSH工具把Hadoop3.1.3和jdk8的压缩包上传到虚拟机上

我用的是finalshell,其他的各种shell或者putty都可以,这里就不多赘述了。压缩包可以去参考链接里下载。

5.安装jdk

先在主目录中(注:关于安装目录的问题,见“说明”)

mkdir opt/app/jdk

解压下载的jdk文件到 /home/用户名/opt/app/jdk目录下 

tar zxf jdk-8u162-linux-x64.tar.gz -C ~/opt/app/jdk

在主目录

sudo vim .bashrc

在最后插入 

export JAVA_HOME=/home/用户名/opt/app/jdk
export JRE_HOME=/home/用户名/opt/app/jdk/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH

重启虚拟机,在终端输入

java -version

6.安装Hadoop 

同理,在opt/app/中创建一个hadoop目录

mkdir /opt/app/hadoop
tar -zxf hadoop-3.1.3.tar.gz -C ~/opt/app/hadoop

在主目录

sudo vim .bashrc

在最后插入 

export HADOOP_HOME=/home/用户名/opt/app/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

编辑Hadoop目录下的子目录etc/hadoop目录文件Hadoop-env.sh文件:

将JAVA_HOME设为jdk所在绝对路径(否则运行时可能会出现找不到的情况)

export JAVA_HOME=/home/用户名/opt/app/jdk

单机测试,参考博客的内容:

# 查看版本号
hadoop version
    
cd /home/用户名/opt/app/hadoop
mkdir ./input
# 将配置文件作为输入文件
cp ./etc/hadoop/*.xml ./input   
# 测试MR程序
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep ./input ./output 'dfs[a-z.]+'
cat ./output/*
# 输出如下表示正确
1       dfsadmin

hadoop目录结构

7.测试本地运行模式

在hadoop目录中

mkdir wcinput
cd wcinput

新建word.txt

vim word.txt

 随便输入一些文本,用来统计词频

 返回hadoop安装目录

cd ..

 使用hadoop提供的examples包进行词频统计,注意输出目录不能已存在

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount wcinput/ ./wcoutput

查看一下输出结果

part-r-00000里面存的是输出结果

8.完全分布式搭建及运行测试

这里参考的是尚硅谷的Hadoop教程

27_尚硅谷_Hadoop_入门_scp&rsync命令讲解_哔哩哔哩_bilibili

这里是重点,最好搭建三遍以上。

首先要编写脚本分发hadoop和jdk(脚本这里暂时没看,所以使用scp,脚本编写可以看视频)

(1)在slave1和slave2上新建文件夹opt/app

(2)把master的jdk和hadoop拷贝到slave1和slave2

sudo scp -r jdk/ wolf@slave1:~/opt/app/
sudo scp -r jdk/ wolf@slave2:~/opt/app/
sudo scp -r hadoop/ wolf@slave1:~/opt/app/
sudo scp -r hadoop/ wolf@slave2:~/opt/app/

(3)设置slave的环境变量

跳到5、6的环境配置,然后重启。

(4)免密登录

希望master可以免密登录slave1和slave2

在master中

ssh-keygen -t rsa
ssh-copy-id slave1

输入密码后,再次登录slave1即可免密登录

ssh slave1 # 登录
exit # 退出

常见问题

如果出现下图这种“Network is unreachable”

在slave中

sudo vim /etc/ssh/sshd_config

把下图中的两行解除注释,然后把no改成yes 

重启ssh服务,然后重启机器即可解决。

systemctl restart ssh.service
sudo reboot

然后可以依次对slave1和slave2进行类似的免密登录配置,使三台机器可以互相免密登录,在任何一台主机上都可以启动和操作集群。

(5) 集群配置

 (a)配置core-site.xml

cd etc/hadoop/
vim core-site.xml

我们要把配置信息放在蓝色框范围内,注意修改路径

<configuration>
	<!-- 指定NameNode的地址 -->
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://master:8020</value>
	</property>
	<!-- 指定hadoop数据的存储目录 -->
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/home/wolf/opt/app/hadoop/data</value>
	</property>

	<!-- 配置HDFS网页登录使用的静态用户为wolf -->
	<property>
		<name>hadoop.http.staticuser.user</name>
		<value>wolf</value>
	</property>
</configuration>

(b)配置hdfs-site.xml

vim hdfs-site.xml

<configuration>
	<!-- namenode web 端访问地址 -->
	<property>
		<name>dfs.namenode.http-address</name>
		<value>master:9870</value>
	</property>
	<!-- 2nn web 端访问地址 -->
	<property>
		<name>dfs.namenode.secondary.http-address</name>
		<value>slave2:9868</value>
	</property>
</configuration>

(c)配置yarn-site.xml

vim yarn-site.xml

<configuration>

	<!-- 指定MR走shuffle -->
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>

	<!-- 指定ResourceManeger的地址 -->
	<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>slave1</value>
	</property>

	<!-- 环境变量的继承 -->
	<property>
		<name>yarn.nodemanager.env-whitelist</name>

<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
	</property>

</configuration>

(d)配置mapred-site.xml

vim mapred-site.xml


<configuration>
	<property>
    		<name>yarn.app.mapreduce.am.env</name>
    		<value>HADOOP_MAPRED_HOME=/home/wolf/opt/app/hadoop</value>
	</property>
	<property>
    		<name>mapreduce.map.env</name>
    		<value>HADOOP_MAPRED_HOME=/home/wolf/opt/app/hadoop</value>
	</property>
	<property>
    		<name>mapreduce.reduce.env</name>
    		<value>HADOOP_MAPRED_HOME=/home/wolf/opt/app/hadoop</value>
	</property>
	<!-- 指定MapReduce程序运行在Yarn上 -->
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
</configuration>

(e)把配置好的文件发送到slave上

sudo scp -r hadoop/ wolf@slave1:~/opt/app/hadoop/etc/
sudo scp -r hadoop/ wolf@slave2:~/opt/app/hadoop/etc/

(6)群起集群并测试

(a)配置workers

vim opt/app/hadoop/etc/hadoop/workers

同样分发

sudo scp -r hadoop/ wolf@slave1:~/opt/app/hadoop/etc/
sudo scp -r hadoop/ wolf@slave2:~/opt/app/hadoop/etc/

(b)启动集群

注意:第一次启动要初始化,在master格式化NameNode。

hdfs namenode -format

用sbin目录下的start-dfs.sh启动 

sbin/start-dfs.sh

集群启动成功,在浏览器中输入master:9870启动web端,查看dfs的NameNode

 (c)在slave1启动YARN(因为ResourceManager在slave1)

sbin/start-yarn.sh

Web端查看Yarn的ResourceManager

http://slave1:8088

 至此,我们已经在Ubuntu18.04上安装并配置了Hadoop3.1.3(完全分布式运行模式),接下来就是Hadoop具体操作的学习。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值