在virtualbox下配置hadoop2.6.1学习环境
虚拟机环境的配置
virtualbox的安装和配置
- 安装server版的ubuntu,这里面坑很多,第一是不带ssh-server环境,需要:
sudo apt-get install openssh-server
- 增强功能安装出现问题
sudo mount /dev/cdrom /mnt/
sudo apt-get install gcc make perl
sudo /mnt/VBoxLinuxAdditions.run
-
中文乱码问题
在/etc/default/locale中
LANG=”en_US.UTF-8″
LANGUAGE=”en_US:en” -
共享文件夹
写一个脚本mount.sh
#!/bin/sh
sudo mount -t vboxsf share ~/shared
- nat网络
在全局配置中增加一个nat网络,比如10.0.3.0.配置端口映射,这样宿主机就可以访问虚拟机了,取消掉DHCP,然后在/etc/network/interfaces里编辑网卡的address,netmask,gateway。
弄好一个后复制三个虚拟机,xshell上配置好ssh登录,剩下的操作在xshell上进行。
环境变量和配置文件
配置java和hadoop。这里java需要在三台虚拟机上配置,hadoop只需要在第一台机器上配置好发到另外两台就可以了。
- /etc/profile里的环境变量
export JAVA_HOME=/home/hadoop1/jdk1.8.0_73
export HADOOP_HOME=/home/hadoop1/hadoop-2.6.1
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:${HADOOP_HOME}/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
-
更改hostname,配置地址映射
hostname是主机名,用于网络上区分机器的名称。在/etc/hostname里配置,地址映射在/etc/hosts里配置。 -
配置ssh免密登录
这里可以采用的方法是利用共享文件夹,三台机器都使用代码,然后把公钥都共享在共享文件夹里,分配添加到authorized_keys里。
ssh-keygen -t rsa
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
- 创建tmp、data、name三个目录。一般这个目录就放在hadoop的根目录下。我是tmp单独一个目录,data,name放在dfs目录下。
- 修改hadoop-env.sh、yarn-env.sh、slaves、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml配置文件。
(1)hadoop-env.sh
export JAVA_HOME=/home/hadoop1/jdk1.8.0_73
//这个不加是不行的,即便/etc/profile里配置了java
(2)yarn-site.xml
用于配置yarn的管理端口信息,在第一台虚拟机上进行
<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.resourcemanager.address</name>
<value>hadoop1:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>hadoop1:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>hadoop1:8035</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>hadoop1:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>hadoop1:8088</value>
</property>
(3)slaves
配置data_node的节点host。将三台机器的host写进去。
hadoop1
hadoop2
hadoop3
(4)core-site.xml
配置tmp目录的位置信息
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop1/hadoop-2.6.1/tmp</value>
</property>
(5)hdfs-site.xml
配置hdfs的关键参数,包括name和data两个目录信息
<configuration>
<property>
<name>dfs.namenode.secondary.http-address