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