[大数据学习研究]1.在Mac上利用VirtualBox搭建本地虚拟机环境
1. 大数据和Hadoop
研究学习大数据,自然要从Hadoop开始。 Hadoop不是一个简单的软件,而是有一些列软件形成的生态,其核心思想来自Google当初发布的三篇论文,后来做了开源的实现, 谷歌的实现和Hadoop的实现大致可以做这样的对应:
Google Map/Reduce <---> Hadoop MapReduce
Google GFS <---> Hadoop HDFS
Google BigTable <---> Hadoop HBase
Hadoop生态的所有组成部分,都是跑在linux环境下的,自然我们首先需要搭建linux环境。另外Hadoop之所以能处理“大”数据,是因为其分布式的特性,可以利用分布式计算构建服务器集群,并可根据需要扩展。为了学习,我们先在本地计算机上利用虚拟机搭建linux环境,要模型集群环境,就多创建几个虚拟机就可以了。
为了玩儿这套东西,因为要创建几个虚拟机,所以的你的电脑内存最好不小于8G,因为跑Hadoop一般一个虚拟机需要2G,随便开3台虚拟机就占不少内存了。 不过前期为了学习,我先只给每台虚拟机分配1G内存,后面不够了在调整就行了。
2. 为什么选VirtualBox?
提起虚拟机,自然首先想到的就是大名鼎鼎的VMware。 VMware是老牌虚拟机软件,网上教程也很多。我之所以选用VirtualBox,主要是因为license的问题。 我手头只有一台MacBook pro, 不想话太多时间在软件license上折腾,所以选择了免费的VirtualBox. VirtualBox的安装过程乏善可陈,就是常规操作,不说了。
3. 虚拟机中安装CentOS
前面提到,我的主力计算机是一台MacBook Pro. 之前为方面,利用Parallel Desktop虚拟了一台Windows 出来,这里不提。
linux系统我选择了CentOS,首先从CentOS官网下载系统的ISO文件。在VirtualBox里新建一个虚拟机,类型选Linux,版本随便选一个就行了,因为里面没有看到有CentOS,不过随便选一个也没问题。 注意最好选一下文件夹,也就是虚拟机文件存放的位置,因为随着装的东西越来越多,虚拟机文件可能会越来越大。我的电脑硬盘都快撑满了,所以挂了个外接硬盘,把虚拟机文件放在了外接硬盘上,需要时插上用,虽然不方便,但也只好将就了。

其他参数可以都按默认,虚拟机创建成功后,点设置,切换到存储,在光驱那里选择下载的CentOS系统的ISO文件,这样虚拟机启动后就可以进入CentOS的安装了。

安装CentOS7 操作系统也不说了,都是图形化界面,没什么难度。
4. 网络环境配置遇到的坑
Linux安装成功后的网络设置这里需要说一下,我在这上面踩了不少坑。我希望我的网络环境是这样的。首先我们希望Linux虚拟机能够连接互联网,这样以后需要下载什么组件时能方便些。其次希望能用Host机器也就是MacBook中访问到Linux虚拟机,以便ssh登录上去。VirtualBox默认的小窗口实在很小,看着眼花,虽然也可以调大,但毕竟在宿主下操作更方便些,所以还是需要从MacBook上ssh过去。但是请注意,CentOS刚刚安装完成后是不能联网的,还需要做相关的设置才行。
4.1 Linux虚拟机连接互联网
虚拟机的网络设置默认可选用“网络地址转换NAT” ,虚拟机会创建一个NAT网络。
虚拟机安装后默认没有开启网络,所以不能联网,需要启动虚拟机,登录后更改网络配置。
vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
把ONBOOT修改为yes,以便让linux 启动后即启动网络。 更改后按ESC,然后 :wq 退出保存。可以不用重启,通过下面的命令重启网络服务,以便使更改生效。
systemctl restart network

这时候可以通过命令 ``` ip addr``` 查看,你会看到网络已经有了一个IP地址,比如我的是 10.0.2.15。如图:

现在你如果 ping www.baidu.com ,应该发现已经能够联网了。

4.2 从宿主机Macbook访问Linux虚拟机
另外,但从主机Macbook还是不能ping通这个地址,就是说主机还不能访问虚拟机。要让主机MacBook和虚拟机linux互通,就需要让这两个机器在同一个网段里。 VirtualBox里的“管理”菜单下,打开“主机网络管理器”,创建一个,如图,可以看到创建了一个192.168.56.1的虚拟网卡。


这时候如果你在MacBook的终端中使用ifconfig命令查看,你会发现,多出来一个vboxnet0的网卡,ip地址就是192.168.56.1
danieldu@daniels-MacBook-Pro-857 ~ ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP>
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
nd6 options=201<PERFORMNUD,DAD>
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether ac:bc:32:c1:ed:dd
inet6 fe80::1c82:47a:64f:460f%en0 prefixlen 64 secured scopeid 0x4
inet 192.168.31.46 netmask 0xffffff00 broadcast 192.168.31.255
nd6 options=201<PERFORMNUD,DAD>
media: autoselect
status: active
....vboxnet0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
ether 0a:00:27:00:00:00
inet 192.168.56.1 netmask 0xffffff00 broadcast 192.168.56.255
utun1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1380
inet6 fe80::f655:9c6f:ca10:240e%utun1 prefixlen 64 scopeid 0xc
nd6 options=201<PERFORMNUD,DAD>...
然后需要VirtualBox中对应的虚拟机设置中,增加一个网卡2. 选择“仅主机(Host-Only)网络”,界面名称就是之前看到的vboxnet0.

然后登录到虚拟机, 利用“ip addr” 命令查看,你会发现多出来一个网卡enp0s8。 从enp0s3 复制一个,然后编辑这个文件,这次更改为固定IP地址。
cp /etc/sysconfig/network-scripts/ifcfg-enp0s3 /etc/sysconfig/network-scripts/ifconfig-enp0s8

然后 重启网络 "systemctl restart network". 这时候就可以从主机Macbook 访问虚拟机了。
4.3关闭Linux防火墙
从上面的设置看到, 主机MacBook 的IP是 192.168.56.1, 虚拟机Linux设置了静态地址为 192.168.56.100. 现在已经在一个网段内了,应该内ping通。如果你ping不通,那很可能是防火墙的问题。 首先MacBook要关闭防火墙。

然后确保虚拟机Linux的也关闭防火墙,默认防火墙是开着的。
systemctl disable firewalld
systemctl status firewalld

检查一下ssh服务,默认应该是开着的

你现在应该能从mac的终端通过ssh登录到linux了。
[大数据学习研究]1.在Mac上利用VirtualBox搭建本地虚拟机环境的更多相关文章
- mac上利用minikube搭建kubernetes(k8s)环境
友情提示:对于初次接触k8s的同学,强烈建议先看看本文最后的参考文章. 环境: mac os(Mojave) 前提:先安装好kubectl (brew install kubectl) .docker ...
- [大数据学习研究] 4. Zookeeper-分布式服务的协同管理神器
本来这一节想写Hadoop的分布式高可用环境的搭建,写到一半,发现还是有必要先介绍一下ZooKeeper这个东西. ZooKeeper理念介绍 ZooKeeper是为分布式应用来提供协同服务的,而且Z ...
- [大数据学习研究]2.利用VirtualBox模拟Linux集群
1. 在主机Macbook上设置HOST 前文书已经把虚拟机的静态IP地址设置好,以后可以通过ip地址登录了.不过为了方便,还是设置一下,首先在Mac下修改hosts文件,这样在ssh时就不用输入ip ...
- [大数据学习研究] 3. hadoop分布式环境搭建
1. Java安装与环境配置 Hadoop是基于Java的,所以首先需要安装配置好java环境.从官网下载JDK,我用的是1.8版本. 在Mac下可以在终端下使用scp命令远程拷贝到虚拟机linux中 ...
- [大数据学习研究] 错误排查,Hadoop集群部分DataNode不能启动
错误现象 不知道什么原因,今天发现我的hadoop集群启动后datanode只有一台了,我的集群本来有三台的,怎么只剩一台了呢? 用jps命令检查一下,发现果然有两台机器的DataNode没有启动. ...
- 大数据学习系列(7)-- hadoop集群搭建
1.配置ssh免登陆 #进入到我的home目录 cd ~/.ssh ssh-keygen -t rsa 执行完这个命令后,会生成两个文件id_rsa(私钥).id_rsa.pub(公钥) 将公钥拷贝到 ...
- 大数据学习系列(6)-- zookeeper集群搭建
下载 wget http://mirrors.shuosc.org/apache/zookeeper/zookeeper-3.3.6/zookeeper-3.3.6.tar.gz tar -zxvf ...
- 大数据学习笔记【一】:Hadoop-3.1.2完全分布式环境搭建(Windows 10)
一.前言 Hadoop原理架构本人就不在此赘述了,可以自行百度,本文仅介绍Hadoop-3.1.2完全分布式环境搭建(本人使用三个虚拟机搭建). 首先,步骤: ① 准备安装包和工具: hadoop-3 ...
- 大数据学习(11)—— Hive元数据服务模式搭建
这一篇介绍Hive的安装及操作.版本是Hive3.1.2. 调整部署节点 在Hadoop篇里,我用了5台虚拟机来搭建集群,但是我的电脑只有8G内存,虚拟机启动之后卡到没法操作,把自己坑惨了. Hive ...
随机推荐
- 基于hprose-golang创建RPC微服务
Hprose(High Performance Remote Object Service Engine) 是一款先进的轻量级.跨语言.跨平台.无侵入式.高性能动态远程对象调用引擎库.它不仅简单易用, ...
- Java——检测其他线程的状态以及启动已死亡的线程
这次这个的思路是在主类中维护一个map,map的key是线程名,value是线程的状态,然后创建周期执行的线程通过检测这个map来判断进程的状态,如果有死亡的进程就把该进程启动. 首先是主类,这里的m ...
- Docker笔记(八):数据管理
前面(哪个前面我也忘了)有说过,如果我们需要对数据进行持久化保存,不应使其存储在容器中,因为容器中的数据会随着容器的删除而丢失,而因通过将数据存储于宿主机文件系统的形式来持久化.在Docker容器中管 ...
- 洛谷 P2657 [SCOI2009]windy数
题意简述 求l~r之间不含前导零且相邻两个数字之差至少为2的正整数的个数 题解思路 数位DP 代码 #include <cstdio> #include <cstring> # ...
- ZooKeeper系列(五)—— ACL 权限控制
一.前言 为了避免存储在 Zookeeper 上的数据被其他程序或者人为误修改,Zookeeper 提供了 ACL(Access Control Lists) 进行权限控制.只有拥有对应权限的用户才可 ...
- 这些用来审计 Kubernetes RBAC 策略的方法你都见过吗?
原文链接:这些用来审计 Kubernetes RBAC 策略的方法你都见过吗? 认证与授权对任何安全系统来说都至关重要,Kubernetes 也不例外.即使我们不是安全工作人员,也需要了解我们的 Ku ...
- Go-cron定时任务
1.cron(计划任务) 按照约定的时间,定时的执行特定的任务(job). cron 表达式 表达了这种约定. cron 表达式代表了一个时间集合,使用 6 个空格分隔的字段表示. 秒 分 时 日 月 ...
- StudyAndroid.2 Activity生命周期
onCreate(): 当我们点击activity的时候,系统会调用activity的oncreate()方法,在这个方法中我们会初始化当前布局setContentLayout()方法. onStar ...
- Web API Media Type Formatter
public static void Register(HttpConfiguration config) { // Web API configuration and services // Web ...
- 在.net core web网站中添加webSocket支持
注意:前置条件,操作系统 windows 8 以上,IIS Express 8.0 以上. 第1步:在Startup.cs文件的头部添加如下引用: using System.Net.WebSocket ...
