hadoop-2.2.0+spark1.1.0安装过程

jopen 10年前

hadoop-2.2.0+spark1.1.0安装过程

首先介绍一下整个过程中需要用到的一些软件

虚拟机vmwareworkstation 10

Linux版本 CentOS 6.4

Jdk jdk-7u21-linux-i586.tar.gz

终端SecureCRT

Hadoop2.2.0

Spark1.1.0

scala2.10.4

 

本人是采用在32位的windowns下安装虚拟机,在虚拟机中建立节点部署hadoop和spark的,spark比较耗内存,所以需要较大内存。

整体设计:一台namenode,namenode同时当datanode,另外2台datanode,如果物理机是linux系统,可以拿物理机当客户端,spark集群的时候,通过客户端去调用。这边我选择再多创建一个虚拟机当客户端。

10.136.7.171

namenode

10.136.7.172

datanode1

10.136.7.173

datanode2

10.136.7.174

customer

 

 

 

 

 

 

整体介绍一下整个流程:

 

新建虚拟机—>网络设置—>关闭防火墙及其他服务—>设置成文本启动方式—> 修改配置文件—>修改hosts—>安装jdk—>安装scala—>环境变量设置-->安装hadoop—>修改 hadoop的配置文件(core-site.xml,hdfs-site.xml,mapred-site.xml,yarn-site.xml, hadoop-env.sh)-->复制整个虚拟机文件—>修改复制后的虚拟机文件—>ssh无密码登录设置--> hadoop集群的启动—>启动yarn—>hadoop源码编译--> spark安装—>修改配置文件(slaves,spark-env.sh)-->拷贝spark到各个节点—>spark集群启动 -- >Spark Standalone HA 部署—>spark工具查看

 

 

具体操作:

 

在vm中新建虚拟机,选择linux类型,3G内存,动态分配硬盘。网络设置,选择桥接网卡。

安装好CentOS6.4之后,首先是进行网络设置,IPV4setting中选择manual,设置成和物理机在同一个网段上,测试能否上网。

 

进入终端,关闭防火墙和一些其他服务。

chkconfig iptables off

chkconfig ip6tables off

chkconfig postfix off

chkconfig bluetooth off

chkconfig --list

 

检查sshd  是否为off off on on on on off

启动时设置成文本方式  

vi /etc/inittab

移动到最后,5改成3  5是以窗口方式启动3是以文本方式启动

重启虚拟机shutdown -h  now

 

新建一个目录,之后将软件安装在这个目录下(也可自行建立其他目录)

mkdir -p  /app/hadoop

 

一些文件句柄的设置,为以后做准备,也可跳过此步骤

vi  /etc/security/limits.conf

插入最后

hadoop - nofile 32768
hadoop soft/hard nproc 32000

 

vi /etc/pam.d/login

插入最后

sessionrequired pam_limits.so

 

vi/etc/ssh/sshd_config

打开三个开关

 

vi/etc/hosts

在最上面增加

192.168.1.171namenode

192.168.1.172datanode1

192.168.1.173datanode2

 

软件安装

安装java

cd 进入安装java的目录(这边通过secureCRT将一些需要安装的软件传到虚拟机,也可在虚拟机中自行下载)

tar-zxf  /app/software/jdk-7u21-linux-i586.tar.gz

同时记住java安装的目录。

 

安装scala

进入安装目录

tar-zxf /scala

为方便以后输命令可改目录名  mv scala-2.10.4 scala2104

修改用户权限 chown -R root:root scala2104/

 

 

环境变量的设置

vi/etc/profile

加在最后

exportJAVA_HOME=/usr/lib/java/jdk1.7.0_21  
export JRE_HOME=/usr/lib/java/jdk1.7.0_21/jre
export SCALA_HOME=/app/scala2104
export HADOOP_COMMON_HOME=/app/hadoop/hadoop220
export HADOOP_CONF_DIR=/app/hadoop/hadoop220/etc/hadoop
export YARN_CONF_DIR=/app/hadoop/hadoop220/etc/hadoop
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
exportPATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:${SCALA_HOME}/bin:${HADOOP_COMMON_HOME}/bin:${HADOOP_COMMON_HOME}/sbin:$PATH

刷新更改的环境变量配置 source /etc/profile

测试java是否安装正确 java -version

测试scala是否安装正确 scala -version

 

安装hadoop-2.2.0

tarzxf /app/software/hadoop-2.2.0.tar.gz

mvhadoop-2.2.0 hadoop220

 

进入hadoop配置文件目录,进行修改

cdhadoop220/etc/hadoop/

vi slaves

去掉localhost

加上 namenode

datanode1

datanode2

 

vicore-site.xml

 

<configuration>中间加

<property>
 <name>fs.defaultFS</name>
 <value>hdfs://namenode:8000</value>
</property>

 

vihdfs-site.xml

 <property>
        <name>dfs.namenode.name.dir</name>
       <value>file:///app/hadoop/hadoop220/mydata/name</value>
  </property>
    <property>
       <name>dfs.datanode.data.dir</name>
      <value>file:///app/hadoop/hadoop220/mydata/data</value> 
    </property>

<property>
       <name>dfs.replication</name>
       <value>1</value>
    </property>

 

vi mapred-site.xml

<configuration>
<property>
     <name>mapreduce.framework.name</name>
     <value>yarn</value>
</property>

</configuration>

 

vi yarn-site.xml

 

<property>
   <name>yarn.resourcemanager.hostname</name>
   <value>namenode</value>
</property>                    
<property>
   <name>yarn.resourcemanager.address</name>
   <value>${yarn.resourcemanager.hostname}:8032</value>
</property>
<property>
   <name>yarn.resourcemanager.scheduler.address</name>
   <value>${yarn.resourcemanager.hostname}:8030</value>
</property>
<property>
   <name>yarn.resourcemanager.webapp.address</name>
   <value>${yarn.resourcemanager.hostname}:8088</value>
</property>
<property>
   <name>yarn.resourcemanager.webapp.https.address</name>
   <value>${yarn.resourcemanager.hostname}:8090</value>
</property>
<property>
  <name>yarn.resourcemanager.resource-tracker.address</name>
   <value>${yarn.resourcemanager.hostname}:8031</value>
</property>
<property>
   <name>yarn.resourcemanager.admin.address</name>
   <value>${yarn.resourcemanager.hostname}:8033</value>
</property>
<property>
   <name>yarn.nodemanager.aux-services</name>
   <value>mapreduce_shuffle</value>
</property>                 

vi hadoop-env.sh

JAVA_HOME=/usr/lib/java/jdk1.7.0_21

重启虚拟机

 

记得关掉vm之后再进行复制虚拟机namenode,否则打开之后会报错。复制整个文件夹,对文件夹进行重命名。之后打开vm,选择打开文件,选择复制之后的文件,修改虚拟机的名字,启动虚拟机,首次启动会有一个选项,选择“我已复制虚拟机”

 

对复制的各个虚拟机均进行一下操作:

 

启动复制的虚拟机

修改网卡的配置文件

vi /etc/udev/rules.d/70-persistent-net.rules

里面有两张网卡,去掉前一个网卡,同时修改name 为eth0 ,同时记住mac地址

 

vi /etc/sysconfig/network-scripts/ifcfg-eth0

修改里面的HWADDR地址,改为刚才记住的。ip地址改为10.136.7.172

vi /etc/sysconfig/network

hostname改为datanode

关闭虚拟机

 

修改第三台

重复上述过程。

 

三台都要

修改用户权限 

cd/app

chown-R hadoop:hadoop hadoop

 

SSH无密码登录

每个节点

su -hadoop

生成公钥 ssh-keygen-t rsa

cd~/.ssh

ls-lsa

公钥三合一,在namenode上运行

ssh 机器名 cat/home/hadoop/.ssh/id_rsa.pub>>authorized_keys 合成公钥

ssh namenode cat/home/hadoop/.ssh/id_rsa.pub>>authorized_keys

sshdatanode1 cat /home/hadoop/.ssh/id_rsa.pub>>authorized_keys

sshdatanode2 cat /home/hadoop/.ssh/id_rsa.pub>>authorized_keys

ls-lsa

修改authorized_keys文件属性为600 ,并发放给各节点

chmod600 authorized_keys

ls-lsa

scp authorized_keyshadoop@datanode1:/home/hadoop/.ssh/

scp authorized_keyshadoop@datanode2:/home/hadoop/.ssh/

 

scp known_hostshadoop@datanode1:/home/hadoop/.ssh/

scp known_hostshadoop@datanode2:/home/hadoop/.ssh/

 

同时在三个节点上进行测试无密码登录

ssh namenodedate

ssh datanode1date

ssh datanode2date

 

hadoop集群的启动

 

cd/app/hadoop

cdhadoop220/

进行格式化

//bin/hdfsnamenode -format

hadoop namenode-format

 

启动hdfs

//sbin/start-dfs.sh

start-dfs.sh

注意查看是否启动了四个,一个namenode 三个datanode

测试hdfs

bin/hdfsdfs -ls /

bin/hdfsdfs -mkdir -p /dataguru/test

bin/hdfsdfs -ls /dataguru

bin/hdfsdfs -ls /dataguru/test

ls -lsa

上传一个文件

bin/hdfsdfs -put LICENSE.txt /dataguru/test/

查看bin/hdfs dfs -ls /dataguru/test

 

启动yarn

 

sbin/start-yarn.sh

注意查看是否启动了四个,一个namenode 三个datanode

jps

查看是否都已启动

 

同时在其他节点也查看

jps

 

url访问

 

namenode:50070

 

yarn:

namenode:8088

 

关闭hadoop集群

su -hadoop

cd/app/hadoop/hadoop220

sbin/stop-all.sh

 

 

hadoop源码编译

32位的不需再进行编译了,64位的需要进行编译,首次编译比较耗时间,也可下载编译过的软件。

可跳过该编译部分

在namenode上进行编译

回到root身份 

cd hadoop

解压hadoop-2.2.0

安装编译工具

yum -y install lzo-devel zlib-devel gccautoconf automake libtool

解压Ant 1.9.2
解压Maven 3.0.5
解压ProtocolBuffer 2.5.0 (编译安装)
解压findbugs 2.0.2

解压CMake 2.8.6 (编译安装)

 

cd  ProtocolBuffer 2.5.0 目录

./configure

make

make check

make install

cd ..

 

cd CMake 2.8.6目录

./bootstrap:make:make install

 

其他编译软件环境变量的修改

cd ..

vi /etc/profile

 

 

source /etc/profile

验证版本

ant -version

 

源码的bug修改(补丁)

 

cd /app/hadoop/hadoop220_src

修改该文件,增加一些内容

 

编译

cd hadoop220_src

mvn clean package -DskipTests-Pdist,native,docs -Dtar

 

 

spark安装

spark-1.0.0/project/SparkBuild.scala SBT依赖包,配置参数包查看

 

spark-1.0.0/pom.xml Maven配置参数包查看

 

cd 进入安装的目录

tarzxf /app/software/spark-1.0.0-bin-2.2.0.tgz

 

mv spark-1.0.0-bin-2.2.0.tgz spark100

cdspark100/conf

节点配置

vislaves

 

去掉localhost

加入节点

namenode

datanode1

datanode2

运行环境

cpspark-env.sh.template spark-env.sh

修改该文件

vi spark-env.sh

加最后

exportSPARK_MASTER_IP=namenode
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_CORES=1
export SPARK_WORKER_INSTANCES=1

exportSPARK_WORKER_MEMORY=2g

 

拷贝到各个节点

 

cd 退到hadoop目录下

(拷贝时候特别注意,直接从pdf或者课件上拷贝时候很容易出现特殊符号,比如问号,报错是需要认真看清楚)

scp -rspark100 hadoop@datanode1:/app/hadoop/

scp -rspark100 hadoop@datanode2:/app/hadoop/

 

启动集群

cdspark100

sbin/start-all.sh

 

测试

http://10.136.7.171:8080/

 

客户端安装

scp -r hadoop@namenode:/app/hadoop/spark100 .

 

客户端访问集群

 

bin/spark-shell--master spark://namenode:7077

 

关闭集群

spark100目录下

sbin/stop-all.sh

 

SparkStandalone HA 部署

 

基于文件系统的HA

cdconf

spark-env.sh里对SPARK_DAEMON_JAVA_OPTS 设置

vi spark-env.sh

在最后增加一行

exportSPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=FILESYSTEM-Dspark.deploy.recoveryDirectory=/app/hadoop/spark100/recovery"

 

将该文件分到各个节点

scp spark-env.shhadoop@DataNode1:/app/hadoop/spark100/conf/

scp spark-env.shhadoop@DataNode2:/app/hadoop/spark100/conf/

测试

cd ..

sbin/start-all.sh

dfs启动 

cd/app/hadoop/hadoop220

sbin/start-dfs.sh

 

客户端

bin/spark-shell--master spark://namenode:7077

 

 

Spark 工具

(1)spark-shell

(2)spark-submit

 

参数说明可查看

bin/spark-shell --help

bin/spark-submit--help