本人使用的是Ubuntu系统:ubuntu-12.04-desktop-i386.iso
和虚拟机VMwareworkstation-v9.0.1。
搭建的hadoop和spark所需要准备的资料分别有:
jdk-7u51-linux-i586.tar.gz
hadoop-2.2.0.tar.gz
scala-2.11.2.tgz
spark-1.0.2-bin-hadoop2.tgz
都可以在官网上下载到。
上面是需要准备好的软件资源。
现在开始我们先安装好虚拟机VMware,再建立好三台虚拟机,分别为hadoop1、hadoop2、hadoop3,
如
hadoop1作为主节点master,hadoop2和hadoop3作为从节点slave。
这里简单说明/etc/hostname和/etc/hosts文件的区别,
/etc/hostname储存的是用户名的,而/etc/hosts储存的是IP和用户名,更改/etc/hostname文件后, 需要重启电脑,才能生效。
hadoop集群部署
先把上面文件进行解压,在主目录下建立文件夹,hadoop_file,把jdk、hadoop文件解压到该文件夹内。
更改/etc/profile文件,添加路径
export JAVA_HOME=/home/hadoop/hadoop_file/java/jdk1.7.0_51/
export PATH=$JAVA_HOME/bin:$PATH
export HADOOP_HOME=/home/hadoop/hadoop_file/hadoop-0.20.2/
export PATH=$HADOOP_HOME/bin:$PATH
在其他节点分别需要对/etc/profile文件进行设置
现在我们需要的是对hadoop集成环境的配置,
1、你可以建立分组,之后的操作仅在所建立的组内。不过也无所谓,分组的好处是你能够更加清晰的分清文件目录,不容易混淆。
2、进行ssh的连接。
~~在测试进行本地循环测试,是否正常可以连接,ssh localhost
,
~~ 如果不能连接,可能是没有安装ssh。安装ssh,命令为:sudo apt-get install ssh
~~安装vi操作,命令为:sudo apt-get install vim
~~更改文件 /etc/hosts文件,把建立的每台虚拟机对应的IP和用户名添加进该文件:
192.168.232.128 hadoop1
192.168.232.129 hadoop2
192.168.232.130 hadoop3
~~在hadoop1主机上进行命令,ssh-keygen –t dsa -P '' –f ~/.ssh/id_dsa
,会生成ssh秘钥,出现id_dsa(私钥) id_dsa.pub(公钥),把公钥复制为authorized_keys,命令为cp id_dsa.pub authorized_keys,
~~把authorized_keys分别复制给hadoop2、hadoop3两台虚拟机。
命令为:ssh authorized_keys hadoop2:/home/hadoop/.ssh,
ssh authorized_keys hadoop2:/home/hadoop/.ssh
~~现在尝试进行ssh连接,命令ssh hadoop2,ssh hadoop3.
~~首次连接需要输入密码,如果连接成功,则ssh单向的ssh连接操作成功了。
3、进行更改hadoop里面的文件,
~~更改conf/hadoop-env.sh文件,添加
export JAVA_HOME=/home/hadoop/hadoop_file/java/jdk1.7.0_51
~~更改conf/mapred-site.xml文件,添加
<property>
<name>mapred.job.tracker</name>
<value>hadoop1:9001</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>/home/hadoop/hadoop_file/dfs/tmp</value>
</property>
~~更改conf/core-site.xml文件,添加
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop_file/dfs/tmp</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop1:9000</value>
</property>
~~更改conf/hdfs-site.xml文件,添加
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/hadoop_file/dfs/data1,/home/hadoop/hadoop_file/dfs/data2</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/hadoop/hadoop_file/dfs/name1,/home/hadoop/hadoop_file/dfs/name2</value>
<description>Name directories</description>
</property>
~~在相应的文件内建立dfs文件,在启动hadoop后会自动建立相应的name、data、tmp文件。如果在linux无权限建立该文件夹时,你需要赋予相应的权限,否则会出错。
配置好上面的各个文件后, 最后我们需要把hadoop、jdk文件复制到其他的节点上,命令为:
scp -r java/ hadoop2:/home/hadoop/hadoop_file
scp -r java/ hadoop3:/home/hadoop/hadoop_file
scp -r hadoop-0.20.2/ hadoop2:/home/hadoop/hadoop_file
scp -r hadoop-0.20.2/ hadoop3:/home/hadoop/hadoop_file
完成后,我们就可以启动hadoop操作了,先格式化
格式化:hadoop namenode -format
启动:start-all.sh
查看:jps
下面是安装集群spark
在主目录下建立spark文件夹,把scala、spark文件解压到spark文件内。
在/etc/profile文件添加
export SCALA_HOME=/home/hadoop/spark/scala-2.11.2
export PATH=$SCALA_HOME/bin:$PATH
export SPARK_HOME=/home/hadoop/spark/spark-1.0.2-bin-hadoop2
export PATH=$SPARK_HOME/bin:$PATH
再修改spark内的文件,
~~conf/slaves 添加虚拟机节点,
hadoop2
hadoop3
~~复制conf/spark-env.sh.template 为conf/spark-env.sh,在添加
export JAVA_HOME=/home/hadoop/hadoop_file/java/jdk1.7.0_51/
export HADOOP_HOME=/home/hadoop/hadoop_file/hadoop-0.20.2/
export SCALA_HOME=/home/hadoop/spark/scala-2.11.2
export SPARK_HOME=/home/hadoop/spark/spark-1.0.2-bin-hadoop2
完成后,就可以启动spark集群了。
命令和hadoop相类似。在sbin命令执行start-all.sh文件就可以了。