1.所需软件:
hadoop-2.6.0.tar.gz
jdk-8u25-linux-i586.gz
scala-2.11.0.tgz
spark-1.4.0-bin-hadoop2.6.tgz
CentOS-6.5-x86_64-bin-DVD1.iso或ubuntu-14.04-desktop-i386.iso或者Fedora
vmwareworkstation
注:目前Spark2.0已经出来,可以尝试最新版本,但是注意Spark版本和所用的hadoop版本要的一致性
2.准备工作:
安装vmware虚拟机
创建一个名为Master的虚拟机。使用64位的ubutun14.04或者Centos6.5。(注意创建时设置用户名为hadoop)
环境配置:
1个Master,2个Slave,节点之间局域网连接,可以相互ping通。
单机虚拟环境时:可以将主节点同时作为master和slave。
(1)为了能正确解析主机名,修改/etc/hosts文件里对应的主机名:
$gedit /etc/hosts
单机版,eg如下:
192.168.238.150 master
127.0.0.1 localhost master
分布式,eg如下:
192.168.238.130 slave1
192.168.238.129 master
192.168.238.131 slave2
注:"/etc/hosts"这个文件是用来配置主机将用的DNS服务器信息,是记载LAN内接续的各主机的对应[HostName IP]用的。当用户在进行网络连接时,首先查找该文件,寻找对应主机名对应的IP地址。
我们要测试两台机器之间知否连通,一般用"ping 机器的IP",如果想用"ping 机器的主机名"发现找不见该名称的机器(这也就是为什么在修改主机名的同时最好修改该文件中对应的主机名),解决的办法就是修改"/etc/hosts"这个文件,通过把LAN内的各主机的IP地址和HostName的一一对应写入这个文件的时候,就可以解决问题。
(2)通过对"/etc/sysconfig/network"文件修改其中"HOSTNAME"后面的值,改成我们规定的名称。
如下:
NETWORKING=yes
HOSTNAME=localhost
Or
NETWORKING=yes
HOSTNAME=master.hadoop
ssh环境配置:
如果你的Linux没有安装SSH,请首先安装SSH
Ubuntu下安装ssh:sudo apt-get install ssh
Centos,Fedora下安装ssh:yum install ssh
Eg如下:
1) sudo apt-get install ssh
2) ssh-keygen -t rsa ===>生成密钥(可以一路回车,默认生在~/.ssh目录下)
3) 进入.ssh目录执行cat id_rsa.pub >> authorized_keys (将id_rsa.pub加到授权的key里面去,这步执行完,应该sshlocalhost可以无密码登录本机了,可能第一次要密码)
对于分布式的环境,可以直接:
复制虚拟机(必须在前3步完成之后复制,因为此时的虚拟机是Master的完全副本,不需要安装很多东东)
1)复制需要虚拟机处于关闭状态
2)选择虚拟机--->虚拟机选项卡---->管理---->克隆---->克隆方法选择完整克隆---->目标地址是G:\Slave1,虚拟机名称是Slave1
3)启动虚拟机Slave1,修改/etc/hostname,并且如果IP地址和hosts文件设置的不同,需要使用ifconfig eth0 IP地址来修改IP地址,让机器名为Slave1,重启。
4)在Master上执行ssh Slave1 将不需要密码,直接登录到。
5.jdk环境的安装:
因为Hadoop是基于java编写的,所以需要安装jdk环境。
$gedit /etc/profile
在最后加入java文件路径(注:注意自己解压安装的路径),eg:
export JAVA_HOME=/usr/local/java/jdk1.8.0_74
export JAVA_BIN=$JAVA_HOME/bin
export JAVA_LIB=$JAVA_HOME/lib
export CLASSPATH=.:$JAVA_LIB/tools.jar:$JAVA_LIB/dt.jar
export PATH=$JAVA_BIN:$PATH
完成之后记得:
$source /etc/profile
安装完成之后,通过java -version进行查看:
6.配置Hadoop环境:
1)拷贝hadoop-2.6.0.tar.gz到Master。
2)sudo mv hadoop-2.6.0.tar.gz /usr/local/
3)重命名:
sudo mv hadoop-2.6.0 hadoop
4)$gedit /etc/profile
修改环境变量,eg如下:
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export YARN_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/bin/:$HADOOP_HOME/sbin/
生效:
$ source /etc/profile
5)sudo vim hadoop-env.sh
export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/local/jdk1.8.0_25
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
sudo vim core-site.xml
配置如下:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
</configuration>
7)sudo vim hdfs-site.xml
配置如下:
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
sudo vim mapred-site.xml
配置如下:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
sudo vim slaves
将Slave节点的ip或者主机名加入
sudo vim yarn-site.xml
配置如下:
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
11)(分布式情况下)在Master上配置好之后,分发打牌各个节点。
scp -r /usr/local/hadoop Slave1:/usr/local/
注意:如果存在权限问题,在子节点上执行:sudo chmod 777 /usr/local/
12)启动hadoop
$hadoop dfsadmin -safemode leave
$Hadoop namenode -format
$start-dfs.sh
$start-yarn.sh
$jps
Spark环境配置:
1)在conf目录下配置slaves
2)$gedit spark-env.sh
配置如下:
export SCALA_HOME=/usr/local/scala/scala-2.10.4
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_74
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
#export HADOOP_CONF_DIR=/usr/local/spark/spark-1.6.1-bin-hadoop2.6/conf
export SPARK_MASTER_IP=192.168.238.150
export SPARK_LOCAL_DIRS=/usr/local/spark/spark-1.6.1-bin-hadoop2.6
export SPARK_DRIVER_MEMORY=1G
export master=spark://192.168.238.150:7070