学习Hadoop时遇到的问题以及解决方法

一、

问题:

本人在伪分布HDFS中学习,每次重启电脑的时候,在执行sbin/start-dfs.sh启动HDFS之前都需要执行bin/hadoop namenode -format命令才能启动。并且每次启动之后都发现之前在HDFS系统中的文件夹和文件都不见了!

原因:

namenode的存储路径是在/tmp/hadoop-**,所以系统在关闭之后都会清除掉这里面的数据。

解决:

修改namenode的默认存储路径。具体的做法为:

在hadoop的配置文件core-site.xml中添加下面的配置。星号表示当前linux用户的用户名


  
    hadoop.tmp.dir 
    /home/****/hadoop/tmp 
 
 重新format,如果在命令行窗口所打印的日志中有:15/10/21 22:38:42 INFO common.Storage: Storage directory /home/liangyihuai/hadoop/tmp/dfs/name has been successfully formatted.说明修改成功 
  

二、我现在非常希望自己能够搭建一个hadoop平台,但是,我只有一台电脑。我应该怎么办?

于是,我打算在自己的电脑上面安装虚拟机。

步骤:(1)、安装Oracle的VirtualBox虚拟机,在虚拟机上面跑三个ubuntu(均为ubuntu-14.04.2-desktop-amd64,每一个虚拟机分配1.5G的内存和8G的空间)

问题:在虚拟机上面ping本地主机,没有问题,但是,在本地主机却不能ping虚拟机,虚拟机之间也不能相互ping通。

   (2)、原来,虚拟机的默认网络ip使用方式是NAT(Network Address Translation,网络地址转换),这是单向的。所以,我们应该改为桥接的方式。

 (3)、因为我们是需要跑hadoop的,所以我希望我们的虚拟机ip地址是静态的,要不的话我们每次开机都要重新修改集群的配置文件。

 (4)、下面,我们需要配置虚拟机静态ip地址。本机主机就不用配置了,因为我用的是校园网,ip地址是动态获取的,如果配置为静态的,就连不了外网(也就是说,hadoop集群不包含本地主机)。

1、sudo vi /etc/network/interfaces ,修改为:(不同的虚拟机之间,只需address不一样就可以了,比如第二台是192.168.1.116)

auto lo
iface lo inet loopback

auto eth1
iface eth1 inet static
address 192.168.1.115
gateway 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
2、
保存后重启:(如果虚拟机的ip没有发生变化,需要重启电脑)
sudo /etc/init.d/networking restart

三、如何把hadoop安装包传到虚拟机上面呢?我们总不能一个个依次下载吧!

步骤:安装ssh

 $ sudo apt-get install ssh
 $ sudo apt-get install rsync
使用ssh登陆

$ ssh localhost
如果要做到无密码登陆ssh,需要:

$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

准备工作已经完成,接下来就可以上传或者下载文件了:

#将本地文件拷贝到服务器上

scp -rp /path/filename  username@remoteIP:/path 

#将远程文件从服务器下载到本地
scp -rp username@remoteIP:/path/filename  /path 


四:同时运行三个虚拟机是很费内存的,怎么办?

可以关闭两个虚拟机的图形界面(开机自动进入命令行界面)

1.启动进入字符界面:
编辑文件: /etc/default/grub

将GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash” 修改为

GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash text”

运行: sudo update-grub

运行: sudo shutdown -r now重启系统查看效果

2。启动到图形用户界面

将1中的text删除即可


你可能感兴趣的:(hadoop)