一、
问题:
本人在伪分布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、
三、如何把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删除即可