Win10平台下搭建hadoop分布式系统


1、安装Oracle VM VirtualBox

2、在VirtualBox虚拟中添加3个虚拟主机,分别命令为Linux1,Linux2,Linux3

注:我们建的虚拟主机都是Ubuntu版本的Linux主机

3、在设置>存储>虚拟光驱中添加Ubuntu镜像

注:如果没有虚拟光驱,可以自己添加一个留空的虚拟光驱,如下图:

4、虚拟机网络设置

1)在新建虚拟电脑的时候,默认只设置了网卡1,如下图:

注:网络地址转换(NAT)的时候,如果主机插了网线,虚拟机可以正常上网.但是如果虚拟机中有多个虚拟电脑,则它们的ip都相同,格式为:10.0.x.x

2)如果要装hadoop集群的话,我们希望每个节点都有一个私有ip,以实现他们的互联

3)因此,我们可以给虚拟主机添加一个网卡2,此网卡连接方式为Host-Only,这种模式下,每个虚拟主机都会分配一个独立的ip,如下:

注:仅主机(Host-Only)适配器这种方式会给每个虚拟电脑分配一个独立ip,这个ip在主机的VirtualBox Host-Only Network的ip网段内.

4)我搭建的分布式集群式在win10平台下进行的,由于VirtualBox不兼容win10,在安装VirtualBox的时候不会在主机中创建Host-Only连接,换了几个版本的BirtualBox,有的能创建,但是Host-Only方式依然找不到界面名称。因为我们网卡2设置为Nat方式。如下介绍。

5)如何配置一个Nat网络。

1.在VirtualBox主界面>管理>全局设定>网络>Nat网络>添加一个Nat网络

2.在虚拟主机设置>网络>网卡2中的连接方式选则Nat网络,界面名称选择刚才建立的Nat网络。

注:1/3台虚拟主机的网卡2的界面名称都必须选同一个Nat网络。

   2/如果系统中本来存在Nat网络,可以不重建,每个虚拟主机选则同一个即可。

截图如下:

6)这样的网络设置,可以保证虚拟机既可以上网,又有私有ip.

5、启动虚拟主机,安装Ubuntu操作系统

注:每台主机的姓名要相同,计算机名必须不同。我们这里计算机名取f1,f2,f3

6、耐心等待Ubuntu操作系统安装完成!!!

7、虚拟主机和主机之间实现双向拖放和共享粘贴板以及文件夹。(非必需步骤)

1)导致这些问题的原因是Linux中没有安装增强功能

2)安装增强功能,点击->设备>>安装增强功能

3)如果点击安装增强功能提示没有虚拟光驱,则在VirtualBox中添加一个留空的虚拟光驱即可.如下图:

8、在每个Ubuntu系统中安装jdk

1)官网下载后是一个jdk-8u51-linux-x64.tar.gz的压缩包

2)sudo tar -zxvf jdk-8u51-linux-x64.tar.gz解压得到jdk1.8.0_51文件夹

3)执行命令sudo gedit /etc/profile,打开etc下的profile文件,在文件最后添加环境变量。

export JAVA_HOME=/usr/java/jdk1.8.0_51

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

4)在终端输入命令source profile重新加载环境变量,输入java命令测试安装结果,如果不行请重启电脑再试。

9、配置hosts文件

1)在每台虚拟主机的终端输入ifconfig命令查看本机ip

2)由于我是在win10平台,用的是Nat网络,所以每台主机分配的ip为:

10.0.2.4;10.0.2.5;10.0.2.6.

3)执行sudo gedit /etc/hosts命令打开hosts文件,在host文件中添加每台主机名以及它们的ip,如下图红框:

注:3台虚拟主机都得配置hosts文件。

10、建立用户组、新用户(前面按照要求安装Ubuntu的,这步可省略)

1)如果前面在安装Ubuntu的时候,3台虚拟主机的用户名都相同并且主机名都不相同,那么此步骤可以省略,我们可以直接使用当前的用户和主机。

2)建立用户组

sudo groupadd hadoop

3)创建用户

sudo useradd -s /bin/bash -d /home/fim -m fim -g hadoop -G admin

-s:指定用户的登陆shell

-d:指定用户主目录

-m:如果指定的主目录不存在,则创建主目录

-g:指定用户所属的用户组,用“,”分隔多个附加组

-G:指定用户所属的附加组

4)如果系统报admin组不存在,那么我们需要给hadoop用户组分配权限,否则,该组用户不能执行sudo操作。如:给hadoop用户组赋sudo权限:

1.打开/etc/sudoers文件

2.添加%hadoop ALL=(ALL) ALL

3.截图如下:

5)建议我们在安装Ubuntu的时候就建好用户名,这样省得麻烦,否则在以后的分布式搭建过程中都得切换到新建的用户名下。

11、配置ssh免密码登陆

1)Ubuntu默认只安装了openssh-client,没有安装spenssh-server。查看进程如下图:

2)执行命令:sudo apt-get install openssh-server安装,完成后进程如下:

注:如果安装时报错说:openssh-server 还没有可供安装的候选者,请执行sudo apt-get update更新apt-get。

3)生成ssh公钥和私钥

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa

注:1/如果生成过程中报.ssh目录不存在,可以自己在~下创建该目录

2/linux中“~”表示用户目录,比如此处就表示/home/fim

4)查看.ssh目录下生成的文件

注:id_dsa.pub就是生成的公钥

5)将公钥加入自己所认证的密钥之中

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

注:1/此处如果切换到.ssh目录下,也可以执行cat id_dsa.pub >>authorized_keys

2/cat命令中,">>"符号表示追加,">"表示创建,千万别搞错了。

3/此处命令表示将id_dsa.pub文件内容追加到authorized_keys文件末尾

4/此处也可以用cp id_dsa.pub authorized_keys替代,因为authorized_keys文件还没有创建,如果文件不存在,cat和cp命令都会默认创建文件,cp命令表示将文件内容拷贝到另个文件中,需注意的是会覆盖原文件内容。

注:此处我们用的cp命令拷贝后再查看文件就多了一个authorized_keys文件

6)执行ssh localhost命令连接本机

注:如果报错connect to host localhost port 22: Connection refused就是因为我们没有安装openssh-server

7)3台虚拟主机都执行上面的操作

8)将f1主机的公钥拷贝到f2,f3主机.ssh目录下,使用scp命令,s=security

scp fim@f1:~/.ssh/id_dsa.pub ~/.ssh/h1_dsa.pub

查看拷贝后目录

注:1/此处可以用@主机名的方式访问远程主机,就是因为前面配置了hosts,否则此处要写ip,显得更加麻烦

2/访问远程主机需要输入密码,其实每次访问远程主机都需要输入一次密码,这就是我们配置ssh免密码登陆的原因。

9)将拷贝过来的文件添加到我们所认证的密钥之中

cat f1_dsa.pub >> authorized_keys

10)切换到f1主机,用命令ssh f2登陆f2主机,你会发现此时已经不再需要输入f2了,登陆f3也一样。

登陆之后,f1主机的命令行路径是这样,也就是说当前用户是f2主机的fim

注:exit命令退出远程主机。

11)在f1主机中,通过远程访问的方式,将f1的公钥拷贝过来并添加到认证密钥中。

scp fim@f1:~/.ssh/id_dsa.pub ~/.ssh/f1_dsa.pub

cat ~/.ssh/f1_dsa.pub >> ~/.ssh/authorized_keys

此处有点迷茫,这样理解:这命令是为了保证NameNode能够无密码连入自己本机。也可以说是NameNode能够无密码访问JobTracker。其实我是不明白这操作有什么意义,因为这操作仅仅让authorized_keys多了一段同样的密钥而已。

12)自此,ssh免密码登陆就配置好了。

12、下载并解压hadoop安装包

1)将解压后的包命名为hadoop,并将其移动到/usr/java目录下

2)配置环境变量,执行sudo gedit /etc/profile打开profile文件,添加下面变量,保存

export HADOOP_HOME=/usr/java/hadoop

export PATH=$PATH:$HADOOP_HOME/bin

3)执行source /etc/profile加载配置文件

4)终端执行echo $HADOOP_HOME,如果输出hadoop安装路径,则表示配置成功

13、配置hadoop

1)修改 hadoop-env.sh

export JAVA_HOME=/usr/java/jdk

2)修改core-site.xml

<configuration>

<property>

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

<value>/home/fim/hdfs/hadooptmp</value><!--缓存路径-->

</property>

<property>

<name>fs.default.name</name>

<value>hdfs://f1:9000</value><!--namenode主机名/ip-->

</property>

</configuration>

3)修改hdfs-site.xml

<configuration>

<property>

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

<value>/home/fim/hdfs/name</value><!--NN所使用的元数据保存-->

</property>

<property>

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

<value>/home/fim/hdfs/data</value><!--真正的datanode数据保存路径-->

</property>

<property>

<name>dfs.replication</name>

<value>2</value><!--文件备份数量-->

</property>

</configuration>

4)修改mapred-site.xml

<configuration>

<property>

<name>mapred.job.tracker</name>

<value>h1:9001</value><!--主机名/ip-->

</property>

</configuration>

5)修改masters和slaves,在masters文件中加上namenode的主机名(ip),在slaves中加上datanode的主机名(ip)

#masters

f1

#slaves

f2

f3

14、将配置好的hadoop拷贝到各个子节点

1)将hadoop拷贝到f2节点

scp -r /usr/java/hadoop f2:~/java/hadoop

2)将hadoop拷贝到f3节点

scp -r /usr/java/hadoop f3:~/java/hadoop

注:1.-r表示拷贝目录,不加-r表示拷贝的是文件

   2.scp命令拷贝时,只能拷贝到用户目录下,即:~/下

3)配置各子节点的hadoop环境变量

4)到此,我觉得我们的hadoop安装目录最好在用户目录为好。

15、将hadoop安装目录所有权限给当前用户

sudo chown -R fim hadoop

注:-R表示向下递归,表示hadoop的所有子目录

16、格式化NameNode、启动hadoop

hadoop namenode -format

start-all.sh

17、检验 hadoop 的启动情况

1)用jps命令检查hadoop启动情况

NameNode:

DataNode:

2)http://10.0.2.4:50070检查是否加入了新的 datanode

3)http://10.0.2.4:50030检查 map reduce的运行情况  

附:

一、VirtualBox共享文件夹挂载

1)创建挂载点mkdir home/fim/software

2)挂载共享文件夹sudo mount -t vboxsf BaiduShare home/fim/software

二、change该目录包括子目录的用户(owner)

sudo chown -R 用户名:所属组  目录



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章