spark1.6.2 on hadoop2.6.4安装流程

来源:互联网 发布:linux安装jdk报错 编辑:程序博客网 时间:2024/05/01 16:54

一、前期集群的网络环境及系统相关配置
1.前期网络环境准备工作,在所有机器上面安装CentOS6.4版本的操作系统配置相应的ip地址,最好是同一个网段的

vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0HWADDR=0C:C4:7A:4D:56:ACTYPE=EthernetUUID=c3c75576-49e0-41ce-9f41-5c5164e1b5e6ONBOOT=yes     //设置开机就启动BOOTPROTO=static   //设置固定的ip地址IPADDR=192.168.6.128NETMASK=255.255.0.0  GATEWAY=192.168.0.1   //这个网关地址在有多张网卡的情况下只需配置一个网关,如果配置多个,可能引起网络混乱   

重启网络服务

service  network restart亦或/etc/rc.d/init.d/network  restart

这时如果机器中有多张网卡的话,可能会报NetworkManager相关服务错误,不过没关系把它关掉就好了

service  NetworkManager  stopchkconfig NetworkManager   off (永久性关闭,和关闭防火墙的命令类似)

然后重启网络应该就可以了
查看网卡的基本设置

ethtool  eth0永久性关闭所有机器的系统自带的防火墙(软件防火墙)service  iptables  stop    chkconfig  iptables  off  

2.格式化所有硬盘盘,然后重新挂载
查看各台机器上面有多少块硬盘盘

fdisk  -l 

一般来讲/dev/sda都是作为系统盘,我们要格式化都是从/dev/sdb往后开始格式化
然后根据之前的查询结果,开始格式化

mkfs  -t  ext4  /dev/sdb .....mkfs.ext4  -T largefile  /dev/sdx  //这个是快速格式的命令

格式化的时候可以多开几个窗口同时进行格式化

blkid   //获取文件系统类型、UUID挂载硬盘mkdir  /data1   ...// 创建挂载目录mount  /dev/sdb   /data1  //挂载
vi  /etc/fstab

在最后一行添加

UUID=ce7c3e05-d966-4128-93d3-4d63dc8408c9       /data1  ext4  defaults        0 0   //红色的UUID可以从上面的blkid处获取 ,  0 0 分别表示不需要备份和不用开机检测

3.安装流程预览
我们先不急着安装,先来理一理大概的流程,做到心里有数就行了。
我自己习惯是先配置集群机器之间的ssh免密码登录当然仅限hadoop用户之间的免密码跳转,然后是配置NTP时钟服务器用来进行时间同步,以管理节点的机器作为服务器,其他节点机器作为客户端就行了,配置好之后就是安装jdk,hadoop(我们仅hadoop中的hdfs分布式文件系统就行了,像其他的mapreduce等配置文件就不用配,用不到),最后就是安装datacube,大致流程就是这样,当然如果你是新手的话,还是不要参照我的流程去搭建。
二、主机环境搭建:

前提是已经完成上述的步骤,然后分别完成以下操作。
(这时是用root身份登陆的)

1. 在此之前我还得重提一下网络环境,如果我们的机器想要访问外网必须得配网关地址和DNS域名解析服务器的地址,当然一般网络的问题各公司或单位的网关都可以解决,在此我就多嘴一下。如果不用上外网就算了。
配置DNS服务器
vim /etc/resolv.conf

...........nameserver  x.x.x.x #Replace with your nameserver ip
  1. 修改主机名,打开hostname文件,分别将主机名修改为master,slave1,slave2
vim  /etc/sysconfig/network
NETWORKING=yesHOSTNAME=masterGATEWAY=192.168.0.1

3. 修改主机配置文件,打开hosts文件:

vim  /etc/hosts

添加如下内容

192.168.6.128 master192.168. 6.129 slave1192.168. 6.130 slave2

4.调整系统参数(这个根据自己需要去调整)

vi  /etc/security/limits.conf

添加

* - nproc 65536* - nofile 65535* - sigpending 65536

重启

三、添加用户

1. 创建hadoop用户组

 groupadd  hadoop

2. 创建hadoop用户

useradd  -g  hadoop  hadooppassword  hadoop  //默认hadoop密码

(切换成hadoop用户,此后所有操作都是默认是hadoop用户,如有例外会特别说明)
*3. 给hadoop用户添加权限,打开/etc/sudoers文件
(此时切换为root用户)*

vim  /etc/sudoers(也可直接输入 visudo)
按回车键后就会打开/etc/sudoers文件了,给hadoop用户赋予root用户同样的权限在root  ALL=(ALL:ALL)  ALL下添加hadoop  ALL=(ALL:ALL)  NOPASSWD: ALL

四、配置master到slave的免密码登陆

1. 安装ssh服务(CentOS安装系统时会默认给你安装ssh服务,如没有则按下面命令来安装)
此时如何没有安装最好切换成root用户安装

# rpm -qa |grep ssh 检查是否装了SSH包没有的话yum install openssh-server和yum install openssh-clients #chkconfig --list sshd 检查SSHD是否在本运行级别下设置为开机启动  #chkconfig --level 2345 sshd on  如果没设置启动就设置下. #service sshd restart  重新启动  #netstat -antp |grep sshd  看是否启动了22端口.确认下. 
#iptables -nL  看看是否放行了22口.

2. 配置master到slave的免密码登陆(这里以slave1为例,其他slave操作一致)

master生成authorized_key

ssh-keygen  -t  dsa

然后一路回车生私钥和公钥文件,在.ssh文件夹下会生成id_dsa和id_dsa.pub两个文件

cd  .ssh/cat  id_dsa.pub >> authorized_keys

将slave1 的id_dsa.pub添加到master的authorized_keys

scp  hadoop@slave1:~/.ssh/id_dsa.pub   ./slave1 _dsa.pubcat  slave1_dsa.pub >> authorized_keys

重复以上步骤再分别将slave2,slave3机器的id_dsa.pub添加到master的authorized_keys
然后再执行命令chmod 700 .ssh

       chmod 600 authorized_keys   //root用户不需要权限操作

最后将生成的authorized_keys分别复制到其他机器slave1,slave2,slave3的.ssh下,然后测试
各机器之间跳转是否还要输入密码

  ssh  salve1

五、搭建NTP时间同步服务器(后续我会在Hbase相关的博客给大家详细写一篇,这里就忽略了)

六、安装jdk和scala,配置环境变量
jdk我们选择1.8的版本,scala选择2.10.4版本
安装jdk和Scala

tar -xvf jdk-8u11-linux-x64.tar.gzmv   /jdk-8ull-linux  /usr/local/jdktar -xvf scala-2.10.4.tgzmv  /scala-2.10.4    /usr/local/jdk

配置jdk和scala的相关环境变量

vim /etc/profile

在最后面追加

export JAVA_HOME=/usr/local/jdkexport SCALA_HOME=/usr/local/scalaexport PATH=$PATH:$JAVA_HOME/bin:$SCALA_HOME/binexport CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jarsource /etc/profile   

然后检查一下jdk和scala是否安装成功

java -version   /scala  -version

七、hadoop的安装与配置
*hadoop安装包版本是hadoop-2.6.4,安装包可以直接从apache社区下,hadoop-2.6.4.tar.gz。

将hadoop解压到/home/hadoop/hadoop-2.6.4目录下(这样的安装目录和用户手册上的有区别,我个人的习惯是这样安装,这样安装有好多好处,比如容易管理,出现错误,也很容易进行定位,二是有权限保护,除了root用户外其他普通用户很难进入这个目录进行破坏性操作,降低了误操作的风险)*
配置环境变量如下:

vim ~/.bash_profile (亦可在/etc/profile全局环境变量中配置环境,但我习惯是在 个人变量中配置)

在最后一行追加如下配置:

export HADOOP_HOME=/home/hadoop/hadoop-2.6.4export SPARK_HOME=/home/hadoop/spark#这个是spark的环境变量export HADOOP_HEAPSIZE=512  #设置一下堆栈大小,我是在vm中跑的所以要设置小一点export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/nativeexport PATH=$HADOOP_HOME/bin:$SPARK_HOME/bin:$PATHexport HADOOP_OPTS=-Djava.library.path=$HADOOP_HOME/lib/native 
source  ~/.bash_profile//使配置环境生效

注:配置环境变量应该在最后一步,各个节点都需要单独配置

以下配置文件在hadoop-2.6.4/etc/hadoop/中。
hadoop-env.sh配置

JAVA_HOME:指定hadoop系统的Java安装的位置。HADOOP_CONF_DIR:指定hadoop下的conf目录路径。HADOOP_HEAPSIZE:hadoop为各个守护进程分配的内存,默认值为1000,单位MB。HADOOP_NAMENODE_OPTS:由于namenode会在内存中存储所有文件的每个数据块的引用,因此namenode很可能会吃光分配给它的所有内存。想不改变其他hadoop守护进程的内存分配量而只增加namenode的内存分配量,可以用此参数传递一个JVM额外选项。如-Xmx2000m选项表示为namenode分配2000MB内存空间。HADOOP_SECONDARYNAMENODE_OPTS:同HADOOP_NAMENODE_OPTS。HADOOP_DATANODE_OPTS:同HADOOP_NAMENODE_OPTS,看情况设置,也可用默认。HADOOP_NAMENODE_INIT_HEAPSIZE:为namenode进程分配的初始内存。HADOOP_LOG_DIR:hadoop生成的系统日志文件存放目录。HADOOP_PID_DIR:hadoop进程文件存放目录
注意:安装时候这里没有提及的配置项不需要修改。

core-site.xml配置

<?xml version="1.0"?><!-- Put site-specific property overrides in this file. --><configuration>    <property>         <name>fs.defaultFS</name>         <value>hdfs://master:9000</value>     </property>     <property>         <name>hadoop.tmp.dir</name>         <value>/home/hadoop/tmp</value>        <description>Abase for other temporary directories.</description>     </property>     <property>         <name>io.file.buffer.size</name>         <value>131702</value>     </property></configuration>

fs.default.name:默认文件系统。URI定义主机名称和namenode的RPC服务器工作的端口号,默认值是9000。端口号与地址根据实际情况设定。该文件的其他配置项不需要修改。

hdfs-site.xml配置

<?xml version="1.0"?><!-- Put site-specific property overrides in this file. --><configuration>        <property>            <name>dfs.namenode.rpc-address</name>                <value>master:9000</value>        </property>        <property>            <name>dfs.namenode.secondary.http-address</name>                <value>master:50090</value>        </property>        <property>               <name>dfs.replication</name>               <value>2</value>        </property>        <property>               <name>dfs.blocksize</name>               <value>268435456</value>        </property>        <property>              <name>dfs.namenode.name.dir</name>              <value>file:/home/hadoop/namenode</value>        </property>         <property>              <name>dfs.namenode.http-address</name>              <value>master:50070</value>        </property>        <property>             <name>dfs.datanode.data.dir</name>             <value>file:/home/hadoop/datanode</value>       </property>       <property>             <name>dfs.webhdfs.enabled</name>             <value>true</value>       </property>       <property>             <name>dfs.permissions</name>             <value>false</value>       </property></configuration>

dfs.namenode.name.dir:namenode存储永久性的元数据的目录列表。namenode在列表上的各个目录中均存放相同的云数据文件。
dfs.datanode.data.dir:datanode存放数据块的目录列表。各个数据块分别存放于某一个目录中。需要确定该目录所在磁盘有足够空间
该文件的其他的配置项不需要修改。
mapred-site.xml配置

<?xml version="1.0"?><!-- Put site-specific property overrides in this file. --><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>        <property>                <name>mapreduce.map.memory.mb</name>                <value>512</value>        </property>        <property>                <name>mapreduce.reduce.memory.mb</name>                <value>512</value>        </property></configuration>

yarn-site.xml配置

<?xml version="1.0"?><!-- Put site-specific property overrides in this file. --><configuration>       <property>                 <name>yarn.resourcemanager.hostname</name>                 <value>master</value>        </property>         <property>                 <name>yarn.resourcemanager.webapp.address</name>                 <value>master:8088</value>        </property>         <property>                 <name>yarn.resourcemanager.resource-tracker.address</name>                 <value>master:8031</value>        </property>        <property>                 <name>yarn.nodemanager.aux-services</name>                 <value>mapreduce_shuffle</value>        </property>         <property>                 <name>yarn.resourcemanager.aux-services.mapreduce_shuffle.class</name>                 <value>org.apache.hadoop.mapred.ShuffleHandler</value>        </property>        <property>                <name>yarn.nodemanager.resource.memory-mb</name>                <value>1024</value>        </property>        <property>                <name>yarn.scheduler.minimum-allocation-mb</name>                <value>512</value>        </property>        <property>                <name>yarn.scheduler.maximum-allocation-mb</name>                <value>1024</value>        </property>         <property>                <name>yarn.nodemanager.resource.cpu-vcores</name>                <value>1</value>        </property>        <property>                <name>yarn.log-aggregation-enable</name>                <value>true</value>        </property></configuration>

slaves配置
slaves文件记录了运行datanode和tasktracker的所有机器。

slave1slave2

将配置好的hadoop分发到各个节点
启动hadoop服务

$HADOOP_HOME/bin/hadoop namenode –format$HADOOP_HOME/sbin/start-dfs.sh

启动完成后可在浏览器中输入http://192.168.6.131:50070查看hadoop状态

$HADOOP_HOME/sbin/start-yarn.sh   

启动yarn

八、spark安装配置
将spark-1.6.2-bin-hadoop2.6.tgz软件包上传到集群上。解压到/home/hadoop/spark 目录下。
spark环境变量配置

 vim ~/bash_profile export SPARK_HOME=/home/hadoop/spark export PATH = $PATH:$SPARK_HOME/bin

spark-env.sh配置
JAVA_HOME:指定系统的Java安装的位置。

export  HADOOP_CONF_DIR=/home/hadoop/hadoop-2.6.4/etc/hadoopexport JAVA_HOME=/usr/local/jdkexport SCALA_HOME=/usr/local/scalaexport SPARK_MASTER_IP=masterexport SPARK_WORKER_MEMORY=1g

spark-defaults.conf文件配置

spark.master= spark://master:7077spark.eventLog.enabled= true#开启spark日志模式spark.eventLog.dir= hdfs://master:9000/tmp/spark/eventsspark.history.ui.port=18080spark.history.fs.logDirectory = hdfs://master:9000/tmp/spark/eventsspark.yarn.jar=hdfs:///system/spark/jars/spark-assembly-1.6.2-hadoop2.6.0.jar#将spark lib下的原包上传到hdfs上面,避免执行spark作业的时候重复上传

slaves文件配置
vim slaves

 slave1 slave2

启动spark

$SPARK_HOME/sbin/ start-all.sh 启动$SPARK_HOME/sbin/ start-history-server.sh 开启日志服务(这个服务开启,才能在18080端口查看spark作业日志)

查看给进程是否已经起来
启动完成后在浏览器中输入http://192.168.6.131:8080查看spark状态
启动spark-shell

$SPARK _HOME/bin/ spark-shell

九、spark作业(后续有时间的话,我会再给大家整个作业demo样例)

后记:这篇文档其实我已经很早之前就写了,因为忙一直没时间整理,现在spark最新版本好像已经到spark2.1了吧,不过总体应该没变。后续我也会再写一些关于k8s,docker容器技术之类的博客,这大半年都是在弄这个,也算也点小的心得,有兴趣的朋友可以过来看一看

0 0
原创粉丝点击