您的位置:首页 > 运维架构

hadoop集群搭建手册

2018-03-19 20:00 253 查看
(# 为root账户下操作,$ 为hadoop账户下操作)

【 比较好用的工具:ambari  https://blog.csdn.net/cy309173854/article/details/58039594 】


环境准备

安装虚拟机VMware



使用centOS镜像



创建三个linux虚拟机:hadoop01,hadoop02,hadoop03
(hadoop02、hadoop03可在hadoop01执行完一些基本配置之后,克隆hadoop01的快照得来)

修改主机名

# vi /etc/sysconfig/network



修改网卡地址

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



// 重启网络服务
# service network restart

添加内网域名映射

// 修改hosts文件
# vi /etc/hosts



创建hadoop用户

# useradd hadoop
  
// 修改hadoop这个用户的密码
# passwd hadoop

设置系统的默认启动级别

# vi /etc/inittab



3 是多用户模式,并且不启动图形界面

配置 hadoop 用户 sudoer 权限

#  vi /etc/sudoers

找到 root ALL=(ALL) ALL 这一行,然后在他下面添加一行:hadoop ALL=(ALL) ALL



防火墙设置

查看防火墙状态:service iptables status
关闭防火墙:service iptables stop
开启防火墙:service iptables start
重启防火墙:service iptables restart
关闭防火墙开机启动:chkconfig iptables off
开启防火墙开机启动:chkconfig iptables on

安装jdk

上传 jdk-7u80-linux-x64.tar.gz(本人使用secureCRT,配置连接虚拟机进行操作)



// 解压至 /usr/local 目录
# tar –zxvf jdk-7u80-linux-x64.tar.gz –C /usr/local

// 修改配置文件
# vi /etc/profile

在最后加入两行:
export JAVA_HOME=/usr/local/jdk1.8.0_73
export PATH=$PATH:$JAVA_HOME/bin



// 重新加载配置文件
# source /etc/profile

// 检查是否安装成功
# java–version



mysql安装

//  检查以前是否装过 Mysql
# rpm -qa | grep -i mysql
// 发现有的话就都卸载

# rpm -e --nodeps mysql-libs-5.1.73-5.el6_6.x86_64

// 删除老版本 mysql 的开发头文件和库
# rm -rf /usr/lib/mysql
# rm -rf /usr/include/mysql
// 注意:卸载后/var/lib/mysql 中的数据及/etc/my.cnf 不会删除,确定没用后就手工删除
# rm -rf /etc/my.cnf
# rm-rf /var/lib/mysq

// 上传压缩包



// 解压至 /root/apps 
# tar -zxvf mysql-5.6.26-1.linux_glibc2.5.x86_64.rpm-bundle.tar –C /root/apps

// 进入到相应目录

# cd /root/apps
// 安装server
# rpm-ivh MySQL-server-5.6.26-1.linux_glibc2.5.x86_64.rpm
// 安装客户端
# rmp -ivh MySQL-client-5.6.26-1.linux_glibc2.5.x86_64.rpm

// 启动 mysql
# service mysql start
(初始密码在 /root/.mysql_secret 这个文件里)

// 登录之后修改密码
mysql>set PASSWORD=PASSWORD('root')

// 退出登陆验证,看是否改密码成功
mysql>exit
# mysql -uroot -p

// 增加远程登录权限
mysql>GRANT ALL PRIVILEGES ON *.* TO'root'@'
13201
%' IDENTIFIED BY 'root' WITH GRANT OPTION;
mysql>FLUSH PRIVILEGES

zookeeper集群搭建

// 上传安装包



// 解压至相应目录

$ tar -zxvf zookeeper-3.4.10.tar.gz -C apps/

// 修改配置文件
$ mv apps/zookeeper-3.4.10/conf/zoo_sample.cfg apps/zookeeper-3.4.10/conf/zoo.cfg
$ vi apps/zookeeper-3.4.10/conf/zoo.cfg



// 如果有第四台机器,并且想配置 observer
增加  server.4=hadoop04:2888:3888:observer

// 分发给其它节点

$ scp -r zookeeper-3.4.10/ root@hadoop02:$PWD
$ scp-r zookeeper-3.4.10/ root@hadoop03:$PWD

// 在dataDir=/home/hadoop/data/zkdata中建立服务器id文件
// 例如server.1=hadoop01:2888:3888当中的 id就是 1
// 在hadoop01 /home/hadoop/data/zkdata 中执行
$ echo 1 > myid  

// 在hadoop02 /home/hadoop/data/zkdata 中执行
$ echo 2 > myid
// 在hadoop03 /home/hadoop/data/zkdata 中执行
$ echo 3 > myid

参数说明:

tickTime
基本事件单元,以毫秒为单位。它用来控制心跳和超时,默认情况下最小的会话超时时间为两倍的 tickTime。
initLimit
此配置表示,允许 follower (相对于 leader 而言的“客户端”)连接并同步到 leader 的初始化连接时间,它以 tickTime 的倍数来表示。当超过设置倍数的 tickTime 时间,则连接失败。
syncLimit
此配置表示, leader 与 follower 之间发送消息,请求和应答时间长度。如果 follower 在设置的时间内不能与 leader 进行通信,那么此 follower 将被丢弃。
dataDir
存储内存中数据库快照的位置
注意:如果需要保留日志信息,那么可以考虑配置 dataLogDir 的位置,这个位置就是日志的存储目录。通常情况下是分开存储的。并且应该谨慎地选择日志存放的位置,使用专用的日志存储设备能够大大地提高系统的性能,如果将日志存储在比较繁忙的存储设备上,那么将会在很大程度上影响系统的性能。
clientPort
监听客户端连接的端口,默认是 2181,最好不要修改。
最后再增加 zookeeper 的服务器列表信息,格式为:
server.id= 主机名: 心跳端口: 选举端口
例子:server.1=hadoop01:2888:3888
其中 id 虽然可以随便写,但是有两点要求,第一不能重复,第二范围是 1-255,并且对应服务器列表上还得存在对应的 id 文件,具体看上面操作。

// 配置环境变量
$ vi ~/.bash_profile
// 增加两行
export ZOOKEEPER_HOME=/home/hadoop/apps/zookeeper-3.4.10

export PATH=$PATH:$ZOOKEEPER/bin

// 重新加载
$ source ~/.bash_profile

// 启动命令
$ zkServer.shstart

hadoop集群环境安装

服务器同步时间

方法一:
// 查看时间
# date



// 使用 date 命令手动简单同步一下

# date -s "2018-03-19 16:27:50"



// 修改时间后,需要写入硬件 bios 才能在重启之后依然生效
# hwclock -w



方法二:
// 配置 crontab 服务,用 ntpdate 定时同步时间(推荐方式)

# ntpdate 202.120.2.101
如果类似 202.120.2.101 这种网络时间服务器无法访问,那么请自行搭建时间服务器

配置免密登录

a)  在 hadoop 登录状态下,输入命令ssh-keygen 或者 ssh-keygen –t rsa
b)  之后你会发现,在/home/hadoop/.ssh目录下生成了公钥文件
c)  使用一个更简单的方式,使用命令:
ssh-copy-id hadoop02
建立 hadoop01 到 hadoop02 的免密登录

安装 hadoop(ha)

集群规划

HDFS YARN
Hadoop01 zookeeper  NameNode + DataNode 主节点  NodeManager主节点 MySQL
Hadoop02 zookeeper  DataNode +Namenode  NodeManager(hdfs备用节点)
Hadoop03 zookeeper  DataNode  NodeManager + ResourceManager(yarn备用节点)

上传安装包



// 使用hadoop账号,解压至相应目录,此处为 ~/apps
$ tar –zxvf hadoop-2.6.5-centos-6.7.tar.gz –C ~/apps



修改配置文件

// 切换到存有hadoop配置文件的目录 
$ cd /home/hadoop/apps/hadoop-2.6.5/etc/hadoop

// 修改 hadoop-env.sh , 配置 export JAVA_HOME、HADOOP_PID_DIR
$  vi hadoop-env.sh





// 修改 mapred-env.sh
$ vi mapred-env.sh
增加 export HADOOP_MAPRED_PID_DIR=/home/hadoop/apps/hadoop-2.6.5/pid



// 修改 core-site.xml 文件
$ vi core-site.xml



// 修改 hdfs-site.xml
$ vi hdfs-site.xml

        <!-- 指定副本数 -->
        <property>
                <name>dfs.replication</name>
                <value>2</value>
        </property>

        <!--指定hdfs的nameservice为myha01,需要和core-site.xml中的保持一致 -->
        <property>
                <name>dfs.nameservices</name>
                <value>myha01</value>
        </property>

        <!-- myha01下面有两个NameNode,分别是nn1,nn2 -->
        <property>
                <name>dfs.ha.namenodes.myha01</name>
                <value>nn1,nn2</value>
        </property>

        <!-- nn1的RPC通信地址 -->
        <property>
                <name>dfs.namenode.rpc-address.myha01.nn1</name>
                <value>hadoop01:9000</value>
        </property>

        <!-- nn1的http通信地址 -->
        <property>
                <name>dfs.namenode.http-address.myha01.nn1</name>
                <value>hadoop01:50070</value>
        </property>

        <!-- nn2的RPC通信地址 -->
        <property>
                <name>dfs.namenode.rpc-address.myha01.nn2</name>
                <value>hadoop02:9000</value>
        </property>

        <!-- nn2的http通信地址 -->
        <property>
                <name>dfs.namenode.http-address.myha01.nn2</name>
                <value>hadoop02:50070</value>
        </property>

        <!-- 指定NameNode的edits元数据在JournalNode上的存放位置 -->
        <property>
                <name>dfs.namenode.shared.edits.dir</name>
                <value>qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/myha01</value>
        </property>

        <!-- 指定JournalNode在本地磁盘存放数据的位置 -->
        <property>
                <name>dfs.journalnode.edits.dir</name>
                <value>/home/hadoop/data/journaldata</value>
        </property>

        <!-- 开启NameNode失败自动切换 -->
        <property>
                <name>dfs.ha.automatic-failover.enabled</name>
                <value>true</value>
        </property>

        <!-- 配置失败自动切换实现方式 -->
        <property>
                <name>dfs.client.failover.proxy.provider.myha01</name>
                <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
        </property>

        <!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行 -->
        <property>
                <name>dfs.ha.fencing.methods</name>
                <value>
                        sshfence
                        shell(/bin/true)
                </value>
        </property>

        <!-- 使用sshfence隔离机制时需要ssh免登陆 -->
        <property>
                <name>dfs.ha.fencing.ssh.private-key-files</name>
                <value>/home/hadoop/.ssh/id_rsa</value>
        </property>

        <!-- 配置sshfence隔离机制超时时间 -->
        <property>
                <name>dfs.ha.fencing.ssh.connect-timeout</name>
                <value>30000</value>

        </property>

// 修改 mapred-site.xml
$ vi mapred-site.xml



// 修改 yarn-site.xml
$ vi yarn-site.xml

       <!-- 开启RM高可用 -->
        <property>
                <name>yarn.resourcemanager.ha.enabled</name>
                <value>true</value>
        </property>

        <!-- 指定RM的cluster id -->
        <property>
                <name>yarn.resourcemanager.cluster-id</name>
                <value>yrc</value>
        </property>

        <!-- 指定RM的名字 -->
        <property>
                <name>yarn.resourcemanager.ha.rm-ids</name>
                <value>rm1,rm2</value>
        </property>

        <!-- 分别指定RM的地址 -->
        <property>
                <name>yarn.resourcemanager.hostname.rm1</name>
                <value>hadoop01</value>
        </property>
        <property>
                <name>yarn.resourcemanager.hostname.rm2</name>
                <value>hadoop02</value>
        </property>

        <!-- 指定zk集群地址 -->
        <property>
                <name>yarn.resourcemanager.zk-address</name>
                <value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
        </property>

        <!-- 要运行MapReduce程序必须配置的附属服务 -->
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>

        <!-- 开启YARN集群的日志聚合功能 -->
        <property>
                <name>yarn.log-aggregation-enable</name>
                <value>true</value>
        </property>

        <!-- YARN集群的聚合日志最长保留时长 -->
        <property>
                <name>yarn.log-aggregation.retain-seconds</name>
                <value>86400</value>

        </property> 
        <!-- 启用自动恢复 -->
        <property>
                <name>yarn.resourcemanager.recovery.enabled</name>
                <value>true</value>
        </property>

        <!-- 制定resourcemanager的状态信息存储在zookeeper集群上 -->
        <property>
                <name>yarn.resourcemanager.store.class</name>
                <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>

        </property>

// 修改 slaves
$ vi slaves
删除localhost,添加hadoop01、hadoop02、hadoop03



// 切换root账户,修改文件夹权限(在所有结点上) 
# su root
# chown -R hadoop:hadoop /home/hadoop/

分发安装包到各节点

// 切换到hadoop账号,进入hadoop安装目录
# su hadoop
$ cd /home/hadoop/apps

$ scp -r hadoop-2.6.5 hadoop01:$PWD
$ scp-r hadoop-2.6.5 hadoop02:$PWD

修改配置文件

# vi /etc/profile

添加:
export HADOOP_HOME=/home/hadoop/apps/hadoop-2.6.5
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

// 重新加载
# source /etc/profile

集群初始化操作

// 启动zookeeper集群(分别在hadoop01, hadoop02和hadoop03上执行) 
$ zkServer.sh start



// 检查启动是否正常
$ zkServer.sh status



// 分别在每个 zookeeper(也就是规划的三个 journalnode 节点)节点上启动 journalnode 进程
$ hadoop-daemon.sh start journalnode

(用 jps 命令查看是否各个 datanode 节点上都启动了 journalnode 进程,如果报错,根据错误提示改进)



// 在第一个 namenode 上执行格式化HDFS操作
$ hadoop namenode –format

(会在 core-site.xml 中配置的临时目录【hadoop.tmp.dir】中生成一些集群的信息,把它拷贝的第二个 namenode 的相同目录下)

// 格式化 ZKFC,在第一台机器上即可
$ hdfszkfc –formatZK

// 启动 HDFS

$ start-dfs.sh

(查看各节点进程是否启动正常,访问 web 页面 hadoop01:50070)







// 启动 YARN
$ start-yarn.sh
(正常启动之后,检查各节点的进程;若备用节点的 resourcemanager 没有启动起来,则手动启动起来 yarn-daemon.sh start resourcemanager,之后访问页面:hadoop02:8088)



访问页面:hadoop02:8088,会出现:



然后自动跳转至 http://hadoop01:8088/cluster


hive安装

// 上传安装包



// 解压至相应目录
$ tar -zxvf apache-hive-1.2.1-bin.tar.gz -C ~/apps/
// 修改配置文件
# vi /etc/profile



增加两行:
export HIVE_HOME=/home/hadoop/apps/apache-hive-1.2.1-bin

export PATH=$PATH:$HIVE_HOME/bin:$HIVE_HOME/conf
// 重新加载配置文件
# source /etc/profile

// 登录mysql
# service mysql start

# mysql -uroot -p
// 创建用户hive,密码hive
mysql> GRANT USAGE ON *.* TO 'hive'@'%' IDENTIFIED BY 'hive' WITH GRANT OPTION;



// 创建数据库hive
mysql> create database hive;



// 允许任意ip以hive登陆数据库

mysql> grant all on hive.* to hive@'%' identified by 'hive';



mysql> grant all on hive.* to hive@'localhost' identified by 'hive';



// 刷新权限

mysql> flush privileges;



// 退出

mysql> exit;



// 验证hive用户,密码hive

# mysql -u hive -p



// 查看当前的数据库
mysql> show databases;



若看到有hive这个库,则说明创建成功

// 退出mysql
mysql> exit;

// 修改hive-site.xml
$ cd apps/apache-hive-1.2.1-bin/conf/
$ cp hive-default.xml.template hive-site.xml



$ vi hive-site.xml 















(记得建立相应的目录)

// 将 mysql-connector-java-5.1.43-bin.jar 放到hive的lib下面
$ mv mysql-connector-java-5.1.10.jar apps/apache-hive-1.2.1-bin/lib/





// 分发到hadoop02、hadoop03上
$ scp -r apache-hive-1.2.1-bin/ hadoop@hadoop02:$PWD

$ scp -r apache-hive-1.2.1-bin/ hadoop@hadoop03:$PWD

// 把jline-2.12.jar拷贝到hadoop相应的目录下,替代jline-0.9.94.jar,否则启动会报错

$ cp apps/apache-hive-1.2.1-bin/lib/jline-2.12.jar apps/hadoop-2.6.5/share/hadoop/yarn/lib/

$ cd apps/hadoop-2.6.5/share/hadoop/yarn/lib/

$ mv jline-0.9.94.jar jline-0.9.94.jar.bak





// 测试,打开hive客户端



kafka安装

// 上传安装包





// 解压到相应目录
$ tar -zxvf kafka_2.11-0.8.2.2.tgz -C apps/

// 修改kafka配置文件
$ vi apps/kafka_2.11-0.8.2.2/config/server.properties

// 修改下面4项
// 第一项:这个值要唯一,不同的机器不能相同,hadoop01就写1,hadoop02就写2,hadoop03就写3

broker.id=1



// 第二项:修改hostname



// 第三项:修改日志路径

log.dirs(记得创建相应的文件夹)



// 第四项:此处要写zookeeper集群的ip+端口号,逗号隔开

zookeeper.connect



// 分发至其他节点
$ scp -r kafka_2.11-0.8.2.2/ hadoop@hadoop02:$PWD

$ scp -r kafka_2.11-0.8.2.2/ hadoop@hadoop03:$PWD

// 修改kafka配置文件
$ vi apps/kafka_2.11-0.8.2.2/config/server.properties









// 添加环境变量
# vi /etc/profile



# source /etc/profile

// 使用hadoop用户启动kafka集群
先启动zookeeper集群,然后在kafka集群中的每个节点使用
$ kafka-server-start.sh apps/kafka_2.11-0.8.2.2/config/server.properties &

启动完成后按回车即可





测试:

// 创建topic
$ kafka-topics.sh --create --zookeeper hadoop01:2181,hadoop02:2181,hadoop03:2181 --replication-factor 3 --partitions 1 --topic mykafka

// 查看topic
$ kafka-topics.sh --list --zookeeper hadoop01:2181,hadoop02:2181,hadoop03:2181



// 查看详细信息

$ kafka-topics.sh --describe --zookeeper hadoop01:2181,hadoop02:2181,hadoop03:2181



// 发送消息(hadoop01上执行)

$ kafka-console-producer.sh --broker-list hadoop01:9092 --topic mykafka
// 接收消息(hadoop02上执行)

$ kafka-console-consumer.sh -zookeeper hadoop01:2181,hadoop02:2181,hadoop03:2181 --topic mykafka --from-beginning
// 在hadoop01输入以下内容

test
hello
可以在hadoop02上看到相应的信息





按Ctrl+C退出

// 关闭kafka,在每台上执行
$ kafka-server-stop.sh

hbase安装

// 上传安装包





// 解压至相应文件
$ tar -zxvf hbase-1.2.4-bin.tar.gz -C ~/apps/

// 进入hbase的conf目录
$ cd ~/apps/hbase-1.2.4/conf/

// 修改配置文件hbase-env.sh
$ vi hbase-env.sh









(建立相应目录:/home/hadoop/data/hbasedata/logs)

// 修改配置文件hbase-site.xml

$ vi hbase-site.xml
<property>
    <name>hbase.rootdir</name>
    <value>hdfs://myha01/hbase</value>
  </property>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>
  <property>
    <name>hbase.master</name>
    <value>60000</value>
  </property>
  <property>
    <name>hbase.tmp.dir</name>
    <value>/home/hadoop/data/hbasedata</value>
  </property>
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>hadoop01,hadoop02,hadoop03</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/hadoop/data/zkdata</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.clientPort</name>
    <value>2181</value>
  </property>
  <property>
    <name>zookeeper.session.timeout</name>
    <value>120000</value>
  </property>
  <property>
    <name>hbase.regionserver.restart.on.zk.expire</name>
    <value>true</value>
  </property>
  <property>
    <name>hbase.master.info.port</name>
    <value>60010</value>

  </property>
(建立相应目录:/home/hadoop/data/hbasedata)
// 配置regionservers

$ vi regionservers



// 删除hbase的slf4j-log4j12-1.7.5.jar,解决hbase和hadoop的LSF4J包冲突

$ cd ~/apps/hbase-1.2.4/lib/

$ mv slf4j-log4j12-1.7.5.jar slf4j-log4j12-1.7.5.jar.bak

// 将hbase工作目录同步到集群其它节点

$ cd ~/apps

$ scp -r hbase-1.2.4/ hadoop@hadoop02:$PWD

$ scp -r hbase-1.2.4/ hadoop@hadoop03:$PWD

// 在集群各节点上修改环境变量

# vi /etc/profile



# source /etc/profile

// 改权限(所有节点)

# chown -R hadoop:hadoop /home/hadoop

启动
// 先启动zookeeper集群
$ zkServer.sh start
// 启动HDFS(hadoop01上)
$ start-dfs.sh

// 启动YARN(hadoop01上)
$ start-yarn.sh

// 启动HBase(hadoop01上)
$ start-hbase.sh

启动后hadoop01上使用jps可以看到HMaster和HRegionServer
hadoop02和hadoop03上可以看到HRegionServer



// 关闭HBase的命令(hadoop01上)

$ stop-hbase.sh



scala安装

// 上传安装包





// 解压至相应目录
$ tar -zxvf scala-2.11.8.tgz -C ~/apps/

// 在各个节点修改环境变量
# vi /etc/profile



# source /etc/profile

// 在hadoop01查看版本,验证安装是否成功

# scala -version



// 分发到各个节点
$ cd ~/apps

$ scp -r scala-2.11.8/ hadoop@hadoop02:$PWD

$ scp -r scala-2.11.8/ hadoop@hadoop03:$PWD

spark安装

// 上传安装包





// 解压至相应文件
$ tar -zxvf spark-2.1.0-bin-hadoop2.6.tgz -C ~/apps/

// 在各个节点修改配置文件
# vi /etc/profile



# source /etc/profile

// 进入到配置文件目录
$ cd apps/spark-2.1.0-bin-hadoop2.6/conf/

// 复制conf文件夹里面spark-env.sh.template一份,改名为spark-env.sh
$ cp spark-env.sh.template spark-env.sh
$ vi spark-env.sh
export JAVA_HOME=/usr/local/jdk1.8.0_73
export SCALA_HOME=/home/hadoop/apps/scala-2.11.8
export SPARK_MASTER_IP=hadoop01
export HADOOP_CONF_DIR=/home/hadoop/apps/hadoop-2.6.5/etc/hadoop
export SPARK_DIST_CLASSPATH=/home/hadoop/apps/hadoop-2.6.5/bin/hadoop
export SPARK_CLASSPATH=$HIVE_HOME/lib/mysql-connector-java-5.1.43-bin.jar

export SPARK_PID_DIR=/home/hadoop



// 复制conf文件夹里面slaves.template一份,改名为slaves
$ cp slaves.template slaves
$ vi slaves



// 将hive目录下conf文件夹中的hive-site.xml复制到spark的conf目录下

$ cp ~/apps/apache-hive-1.2.1-bin/conf/hive-site.xml ~/apps/spark-2.1.0-bin-hadoop2.6/conf/

// 将hadoop/etc/hadoop文件中的hdfs-site.xml和core-site.xml文件复制到spark的conf目录下

$ cp ~/apps/hadoop-2.6.5/etc/hadoop/hdfs-site.xml ~/apps/hadoop-2.6.5/etc/hadoop/core-site.xml ~/apps/spark-2.1.0-bin-hadoop2.6/conf/

// 将conf 目录下的spark-defaults.conf.template 复制一份,改名为spark-default.conf
$ cd ~/apps/spark-2.1.0-bin-hadoop2.6/conf
$ cp spark-defaults.conf.template spark-defaults.conf

$ vi spark-defaults.conf
在最下面加上下面这一行

spark.files file:///home/hadoop/apps/spark-2.1.0-bin-hadoop2.6/conf/hdfs-site.xml,file:///home/hadoop/apps/spark-2.1.0-bin-hadoop2.6/conf/core-site.xml

// 分发到各个节点
$ cd ~/apps/

$ scp -r spark-2.1.0-bin-hadoop2.6/ hadoop@hadoop02:$PWD

$ scp -r spark-2.1.0-bin-hadoop2.6/ hadoop@hadoop03:$PWD

// 运行Spark(hadoop01 上)

运行spark 前需启动hadoop 的HDFS 和YARN
$ start-master.sh

$ start-slaves.sh



在hadoop01 上使用jps 命令可以看到Master 和Worker,hadoop02 和03 上可以看到Worder
用浏览器访问hadoop01:8080 可以看到Spark 的web 界面,可以看到3 个worker



// 关闭Spark 的命令(cluster1 上)
$ stop-slaves.sh
$ stop-master.sh



 storm安装

// 上传安装包



// 解压至相应目录
$ tar -zxvf apache-storm-0.9.7.tar.gz -C ~/apps/

// 在所有节点上添加环境变量
# vi /etc/profile
export STORM_HOME=/home/hadoop/apps/apache-storm-0.9.7

export PATH=$PATH:$STORM_HOME/bin



# source /etc/profile

storm需要python2.6以上的版本
// 查看python版本
# python
可以在最上面一行看到python的版本
// 退出python交互式界面
>>> exit()
如果版本低于2.6,使用yum install python,安装Python2.7

// 更改配置文件

$ vi ~/apps/apache-storm-0.9.7/conf/storm.yaml 
修改 storm.zookeeper.servers :
- “cluster1”
- “cluster2”
- “cluster3”



 增加 storm.local.dir : “/home/hadoop/data/stormdata”

切记:冒号左右要有空格,否则会报错could not found expected ‘ : ’

storm.local.dir的最左边也要有一个空格(之后要创建相应目录)

// 分发到各个节点上
$ cd ~/apps/

$ scp -r apache-storm-0.9.7/ hadoop@hadoop02:$PWD

$ scp -r apache-storm-0.9.7/ hadoop@hadoop03:$PWD

// 在hadoop01上执行

$ nohup storm ui  > /dev/null 2>&1 &
$ nohup storm nimbus  > /dev/null 2>&1 &
//在hadoop02、hadoop03上执行
$ nohup storm supervisor >  /dev/null 2>&1 &

//在hadoop01、hadoop02、hadoop03上执行
$ nohup storm logviewer >  /dev/null 2>&1 &


http://hadoop01:8080
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: