Mac 使用paralles 从零搭建hadoop集群

目录

1. 虚机的安装与配置

1.1 安装parallels

1.2 安装fedora系统

1.3 fedora的配置

1.3.1 内存和硬盘配置

1.3.2 网络配置

1.3.3 共享文件夹

1.4 虚拟机克隆 与 加载

2. 免密登录

2.1 分别查看master, slave01,slave02 的ip

2.2 查看各虚机的hostname

​编辑

 ​编辑

2.3 设置DNS,在3太机器的“/etc/hosts”文件中,均加入以下内容

2.4 ssh服务设置

3. Jdk 和 hadoop的安装和配置

4. hadoop集群验证

5. 参考链接

6. 可能出现的一些问题

6.1 jps comment not found

6.2 防火墙问题

6.2.1 fedora34 开启http server发现无法访问,需要关闭防火墙

6.2.2 hadoop fs -put 出错

6.3 Hadoop yarn nodemanager启动提示 Retrying connect to server: 0.0.0.0/0.0.0.0:8031.

6.3 虚拟内存不够

6.4 程序有问题

6.5 其它定位问题的方法:


1. 虚机的安装与配置

1.1 安装parallels

从官网下载parallels,安装。

关于parallels的一些设置,可以右键Dock栏的Parallels Desktop图标,选择偏好设置查看。

Parallels 的试用期是14天,怎样永久使用呢?

命令行开启虚拟机:prlctl start 'master'

命令行重启虚拟机:prlctl restart 'slave01'

参考链接:https://www.youtube.com/watch?v=ZsqlVbR5aBw

1.2 安装fedora系统

打开parallels,直接在引导页面下载 fedora系统(该系统下载时间会比较长)

1.3 fedora的配置

安装好fedora系统后,右键Dock栏的Parallels Desktop图标,点击“控制中心”,可以看到刚才下载的fedora系统。

点击fedora虚机,进行配置(注意:关机后,才可以更改虚拟机的各种配置)

 

 

1.3.1 内存和硬盘配置

虚拟机的内存和硬盘默认即可,后续可以随时动态调整

 

1.3.2 网络配置

网络选择默认的Shared Network

1.3.3 共享文件夹

开启文件夹共享(但仍需要配合Paralles Tools才能实现真正的文件夹共享)

 

此时,/media/psf/Home 下面就可以看到宿主机的文件了

1.4 虚拟机克隆 与 加载

参考链接:克隆虚拟机

(1) 在控制中心内,选择要克隆的虚拟机(必须处于关闭状态),然后依次选择 文件> 克隆

(2) 选择所需的克隆虚拟机存储位置。

默认情况下,Parallels Desktop 会将克隆的虚拟机存储在“文档”>“Parallels”文件夹中。

(3) 点击 保存 以开始克隆虚拟机。

加载刚刚保存的虚拟机

 

 

我构建的是一个master,两个slave。(master,slave是我自己修改的名字,可以在配置里修改)

2. 免密登录

2.1 分别查看master, slave01,slave02 的ip

Ifconfig

注:如果master,slave01,slave02 的ip是一样的,要重新修改一下ip

master

 

slave01

slave02

 

2.2 查看各虚机的hostname

 

 

  • 修改hostname的方法

如果hostname显示有误,以为master机器为例,可以通过

Vi ~/.bashrc 添加 hostname master

 

在vim中,保存退出,执行bash,观察当前机器的hostname已经修改。

2.3 设置DNS,在3太机器的“/etc/hosts”文件中,均加入以下内容

10.21.55.7 master

10.21.55.8 slave01

10.21.55.9 slave02

 

slave01 和 slave02 同样操作

2.4 ssh服务设置

ssh服务开启,参考链接:https://blog.csdn.net/rs_network/article/details/8043109

A.确认是否已安装ssh服务

]# rpm -qa | grep openssh-server

openssh-server-5.3p1-19.fc12.i686 (这行表示已安装)

若未安装ssh服务,可输入:

#yum install openssh-server

B. 启动SSH服务

# systemctl start sshd.service

或者 #service sshd start

也可以用 restart 和 stop控制sshd服务

C. 设置系统启动时开启服务

# systemctl enable sshd.service

D. 同样也需开启防火墙22端口

#iptables -A INPUT -p tcp --dport 22 -j ACCEPT

也可以将上述参数加入防火墙配置中:

#vi /etc/sysconfig/iptables

加入:-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

保存后重启iptables即可

在master,slave01 和 slave02 机器上,均进行如下操作即可

2.5 ssh免密登录设置

以master为例,执行 “ssh-keygen”命令,一路回车,得到

 

然后,通过ssh-copy-id的方式进行免密配置

ssh-copy-id ~/.ssh/id_rsa.pub master

ssh-copy-id ~/.ssh/id_rsa.pub slave01

ssh-copy-id ~/.ssh/id_rsa.pub slave02

在slave01,slave02 机器上重复如上操作

在master机器上验证:

ssh slave01

3. Jdk 和 hadoop的安装和配置

(1) 将hadoop,java安装包,放到共享目录下,拷贝到master机器上,然后再将安装包同步到slave01 和 slave02 上,保证这三个机器安装的内容是一致的。故仍以master为例

Sudo cp /media/psf/Home/hadoop-2.6.5.tar.gz /usr/local/src/

Sudo cp /media/psf/Home/jdk-8u172-linux-x64.tar.gz /usr/local/src/

将hadoop 和 java 拷贝到机器slave01上

Sudo scp -rp /usr/local/src/hadoop-2.6.5.tar.gz parallels@slave01:~/

Sudo cp ~/hadoop-2.6.5.tar.gz /usr/local/src/

Sudo scp -rp /usr/local/src/jdk-8u172-linux-x64.tar.gz parallels@slave01:~/

Sudo cp ~/jdk-8u172-linux-x64.tar.gz /usr/local/src/

同理,将hadoop 和 java 拷贝到机器slave02上

(2)安装java和hadoop,以master为例,slave01 和 slave02 参考master的方法

~/.bashrc 文件如下所示

 

(3)在"/usr/local/src/hadoop-2.6.5/etc/hadoop"目录中,开始hadoop的一系列配置

hadoop-env.sh 配置JAVA_HOME

 

yarn-env.sh 配置JAVA_HOME

修改slaves文件,里面写从节点hostname

 

core-site.xml 配置

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://master:9000</value>

</property>

<property>

<name>hadoop.tmp.dir</name>

<value>/usr/local/src/hadoop-2.6.5/tmp</value>

</property>

</configuration>

mapred-site.xml 配置

cp mapred-site.xml.template mapred-site.xml

<configuration>

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

</configuration>

yarn-site.xml 配置

 

<configuration>

<!-- Site specific YARN configuration properties -->

<property>

<name>yarn.resourcemanager.hostname</name>

<value>master</value>

</property>

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

<property>

<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>

<value>org.apache.hadoop.mapred.ShuffleHandler</value>

</property>

<property>

<name>yarn.nodemanager.vmem-check-enabled</name>

<value>false</value>

</property>

<property>

<name>yarn.nodemanager.vmem-pmem-ratio</name>

<value>5</value>

</property>

<property>

<name>yarn.resourcemanager.address</name>

<value>master:8032</value>

</property>

<property>

<name>yarn.resourcemanager.scheduler.address</name>

<value>master:8030</value>

</property>

<property>

<name>yarn.resourcemanager.resource-tracker.adderess</name>

<value>master:8031</value>

</property>

<property>

<name>yarn.resourcemanager.admin.address</name>

<value>master:8033</value>

</property>

<property>

<name>yarn.resourcemanager.webapp.address</name>

<value>master:8088</value>

</property>

</configuration>

hdfs-site.xml 配置

 

<configuration>

<property>

<name>dfs.namenode.secondary.http-address</name>

<value>master:9001</value>

</property>

<property>

<name>dfs.namenode.name.dir</name>

<value>file:/usr/local/src/hadoop-2.6.5/dfs/name</value>

</property>

<property>

<name>dfs.namenode.data.dir</name>

<value>file:/usr/local/src/hadoop-2.6.5/dfs/data</value>

</property>

<property>

<name>dfs.replication</name>

<value>3</value>

</property>

</configuration>

在HADOOP_HOME(/usr/local/src/hadoop-2.6.5)下,创建3个空目录

mkdir tmp

mkdir -p dfs/name

mkdir -p dfs/data

配置已全部配好,然后将所有配置,同步到slave01,slave02(可以使用scp)

4. hadoop集群验证

进行hdfs集群格式化,中间会提示Y or N,这里直接Y回车就好

cd /usr/local/src/hadoop-2.6.5/bin

./hdfs namenode -format

启动集群

cd /usr/local/src/hadoop-2.6.5

./sbin/start-all.sh

 

在master上观察进程

在slave01上观察进行

同理,在slave02上观察进程

 

关闭集群

cd /usr/local/src/hadoop-2.6.5

./sbin/stop-all.sh

5. 参考链接

(1)https://zhuanlan.zhihu.com/p/507297549

(2)使用Paralles Desktop,在虚拟机环境中搭建hadoop集群(2主3从5节点)_山海王子的博客-CSDN博客_hadoop 二主三从

(3)http://www.sunnyos.com/article-show-78.html

6. 可能出现的一些问题

6.1 jps comment not found

(1) 查看是否安装java

java -version

若安装,则会看到java版本;若未安装,则安装

(2)若安装java,在~/.bash_profile 中加入jdk路径。

export PATH=$PATH:/usr/local/java/jdk1.8.0_172/bin/

source ~/.bash_profile

参考博客:解决jps command not found

6.2 防火墙问题

6.2.1 fedora34 开启http server发现无法访问,需要关闭防火墙

fedora34 关闭防火墙

临时停止防火墙

$ sudo systemctl stop firewalld

永久禁止防火墙

$ sudo systemctl disable firewalld

查看防火墙状态

$ systemctl status firewalld

参考链接:https://insidelinuxdev.net/article/a0bf3j.html

6.2.2 hadoop fs -put 出错

在master机器上执行 hadoop fs -put 出现如下错误

“put:call from master/192.168.44.128 to master:9000 failed on connection exception:java.net connect Exception 拒绝链接”

错误信息里面还给了一个链接 ConnectionRefused - HADOOP2 - Apache Software Foundation

在slave机器上执行hadoop fs -put 出现如下错误

“put:No route to host from slave/192.168.44.129 to master:9000 failed on socket timeout exception:java.net. NoRouteToHostException 没有到主机的路由”

错误信息里也给了一个链接NoRouteToHost - HADOOP2 - Apache Software Foundation

解决方法

关闭防火墙,重启。

Centos 7 关闭防火墙

  1. 开启命令: systemctl start firewalld.

  2. 临时关闭命令: systemctl stop firewalld.

  3. 永久关闭命令: systemctl disable firewalld.

也可试着使用 service iptables stop/start 关闭/打开防火墙

6.3 Hadoop yarn nodemanager启动提示 Retrying connect to server: 0.0.0.0/0.0.0.0:8031.

https://blog.csdn.net/cl723401/article/details/82949139

原因,是因为 nodemanager 找不到 resourcemanager

在yarn-site.xml中添加

<property>

<name>yarn.resourcemanager.hostname</name>

<value>master</value>

</property>

6.3 虚拟内存不够

参考链接

https://blog.csdn.net/ztx22555/article/details/125918895

关于Hadoop集群物理及虚拟内存的检测的设置说明_7&的博客-CSDN博客

6.4 程序有问题

Error: java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 1

Running a job using hadoop streaming and mrjob: PipeMapRed.waitOutputThreads(): subprocess failed wi

https://stackoverflow.com/questions/17037300/running-a-job-using-hadoop-streaming-and-mrjob-pipemapred-waitoutputthreads

6.5 其它定位问题的方法:

(1)注意看log

(2)根据log,看可能有哪些问题。比如 log中显示slave 找不到resourcemanager,而resourcemanager是在master上的一个服务,所以,就需要查看,master上相应的服务是否开启等。

比如可以使用netstat 查看一下网络的状态,具体用法详见:Linux netstat命令 | 菜鸟教程

使用 netstat -tunlp 得到如下结果

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值