系统准备
相关软件包下载:
链接:https://pan.baidu.com/s/1EOLUphwZgzwSX01HsDJM0g
提取码:1tsf
说明
特别说明: 教程用的主机名分别为master,slave1,slave2 所以发现有出现主机名为 ” spark1”的主机名
等同于 “master”如果如果看见配置文件为spark1,一定要修改成master ;有些图片是后面添加的才出现主机名不一致但并不影响理解.
没有特别说明操作都是在 master 机器操作
关闭防火墙
关闭Linux和Windows的防火墙(防止机器之间应为防火墙拦截而不能连通)
| Windows: |
| |
| window系统: 控制面板 -> 系统和安全 ->Windows Defender 防火墙 -> 启用或关闭Windows Defender 防火墙 -> 关闭Windows Defender 防火墙 |
| Linux: |
| |
| 停止防火墙: service iptables stop |
| 启动防火墙: service iptables start |
| 重启防火墙: service iptables restart |
| 永久关闭防火墙: chkconfig iptables off |
| 永久开启防火墙: chkconfig iptables no |
| 查看防火墙状态: service iptables status |

| 查看SELinux状态 |
| getenforce |
| |
| 修改配置文件/etc/selinux/config |
| 将SELINUX=enforcing改为SELINUX=disabled |

配置网络和静态IP

查看自动生成的IP

设置静态IP

重启网络服务,并检测dns是否生效

配置IP映射和主机名
更改主机名,便于集群管理(重启才能生效)
vim /etc/sysconfig/network
修改其他两台主机名分别为 slave1 和 slave2
配置master主机的IP主机映射, 可以将名称映射为对应的IP地址
vim /etc/hosts
| 192.168.153.101 master |
| 192.168.153.102 slave1 |
| 192.168.153.103 slave2 |
配置SSH免秘钥登录
| cd ~/.ssh/ |
| |
| ssh-keygen -t rsa (四次连续回车) |
| 生成 id_rsa(私钥) id_rsa.pub(公钥) |

| ssh-copy-id master(主机名,需要配好了主机映射) |
| authorized_keys known_hosts |
| 将另外两台slave1和slave2重复上述操作 |
| 复制 另外两台authorized_keys的内容追加到master的authorized_keys里面 |
| 最终authorized_keys文件的内容 |
| |

将这个最终的authorized_keys文件copy到其他机器的 /root/.ssh 目录下
| scp -r /root/.ssh/authorized_keys root@slave1:/root/.ssh |
| scp -r /root/.ssh/authorized_keys root@slave2:/root/.ssh |
| |
| 说明: |
| scp -r(复制文件夹) 本地文件路径 目标用户名@目标主机IP/IP映射的主机名:目标主机的路径 |
| |
| 测试免密码登录 |
| ssh slave1 |
| ssh slave2 |
| 输入 exit 退出 |
| |

配置JDK1.8
| 解压缩jdk安装包 |
| tar -zxvf jdk-8u144-linux-x64.tar.gz |
| |
| 创建目录/opt/java |
| mkdir /opt/java |
| |
| 移动文件夹jdk1.8.0_144到/opt/java下面,并改名为jdk1.8 |
| mv jdk1.8.0_144/ /opt/java/jdk1.8 |
| |
| 配置需要用到的所有环境变量 |
| vim /etc/profile |
| |
| |
| export JAVA_HOME=/opt/java/jdk1.8 |
| export JRE_HOME=/opt/java/jdk1.8/jre |
| export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib |
| |
| |
| export SCALA_HOME=/opt/scala/scala2.12.2 |
| |
| |
| export SPARK_HOME=/opt/spark/spark2.2 |
| |
| |
| export ZK_HOME=/opt/zookeeper/zookeeper3.4 |
| |
| |
| export HBASE_HOME=/opt/hbase/hbase1.2 |
| |
| |
| export HADOOP_HOME=/opt/hadoop/hadoop2.8 |
| export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native |
| export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib" |
| |
| |
| export HIVE_HOME=/opt/hive/hive2.1 |
| export HIVE_CONF_DIR=${HIVE_HOME}/conf |
| |
| |
| export KAFKA_HOME=/opt/kafka/kafka1.0.0 |
| |
| |
| export PATH=.:${JAVA_HOME}/bin:${SCALA_HOME}/bin:${SPARK_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${ZK_HOME}/bin:${HBASE_HOME}/bin:${HIVE_HOME}/bin:${KAFKA_HOME}/bin:$PATH |
| |
| 刷新环境变量文件,使其立即生效 |
| source /etc/profile |
| |
配置Scala2.12.2
| tar -zxvf scala-2.12.2.tgz |
| |
| 创建目录/opt/scala |
| mkdir /opt/scala |
| |
| 移动文件夹scala-2.12.2到/opt/ scala下面,并改名为scala2.12.2 |
| mv scala-2.12.2 /opt/scala/scala2.12.2 |
| |
| 配置环境变量(略,前面配过) |
| |
| source /etc/profile |
| |
配置Zookeeper
| 解压文件 |
| tar -zxvf zookeeper-3.4.10.tar.gz |
| |
| mkdir /opt/zookeeper |
| mv zookeeper-3.4.10 /opt/zookeeper/zookeeper3.4 |
| |
| 环境变量配置(略,前面配过) |
| source /etc/profile |
| |
| 创建存放数据的文件夹和文件 |
| mkdir /opt/zookeeper/data |
| mkdir /opt/zookeeper/dataLog |
| |
| /opt/zookeeper/data目录下创建myid文件 |
| touch /opt/zookeeper/data/myid |
| 更改myid文件。 我这边为了方便,将master、slave1、slave2的myid文件内容改为1,2,3 这些数字代表的是每一台zookeeper自己的ID |
| echo 1 >> myid |
| |
配置修改zoo.cfg
| cd /opt/zookeeper/zookeeper3.4/conf |
| cp zoo_sample.cfg zoo.cfg |
| |
| vim zoo.cfg |
| |
| dataDir=/opt/zookeeper/data |
| dataLogDir=/opt/zookeeper/dataLog |
| server.1=master:2888:3888 |
| server.2=slave1:2888:3888 |
| server.3=slave2:2888:3888 |
| |
| 配置说明: |
| client port,顾名思义,就是客户端连接zookeeper服务的端口。这是一个TCP port。 |
| dataLogDir里是放到的顺序日志(WAL)。而dataDir里放的是内存数据结构的snapshot,便于快速恢复。为了达到性能最大化,一般建议把dataDir和dataLogDir分到不同的磁盘上,这样就可以充分利用磁盘顺序写的特性。dataDir和dataLogDir需要自己创建,目录可以自己制定,对应即可。 |
| server.1中的这个1需要和master这个机器上的dataDir目录中的myid文件中的数值对应。server.2中的这个2需要和slave1这个机器上的dataDir目录中的myid文件中的数值对应。server.3中的这个3需要和slave2这个机器上的dataDir目录中的myid文件中的数值对应。当然,数值你可以随便用,只要对应即可。2888和3888的端口号也可以随便用,因为在不同机器上,用成一样也无所谓。 |
| 1.tickTime:CS通信心跳数 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。 tickTime=2000 2.initLimit:LF初始通信时限 集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。 initLimit=10 3.syncLimit:LF同步通信时限 集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)。 syncLimit=5 |
| |
| 依旧将zookeeper传输到其他的机器上,记得更改 /opt/zookeeper/data 下的myid,这个不能一致。 |
| |
将文件复制到其他机器
| scp -r /opt/zookeeper root@slave1:/opt |
| scp -r /opt/zookeeper root@slave2:/opt |
| |
| 需要更改myid文件 |
| |
启动所有机器的Zookeeper
| cd /opt/zookeeper/zookeeper3.4/bin |
| |
| 启动服务 |
| ./ zkServer.sh start |
| |
| 查看启动状态,各个机器上zookeeper的leader(主)和follower(从) ,只能一个是主,随机选择 |
| ./zkServer.sh status |
| |

配置Hadoop HA
Hadoop HA:在Hadoop分布式只有一个master管理的基础上,实现在主master宕机时,设置一个Node在Zookeeper的调度下可以立即顶替master的所有任务。不会应为master宕机导致整个集群瘫痪。
主机 |
安装的软件 |
开启的进程 |
spark1 |
jdk,hadoop,zookeeper |
7669 DFSZKFailoverController 4261 QuorumPeerMain 7367 NameNode 8362 Jps 8269 ResourceManager |
slave1 |
jdk,hadoop,zookeeper |
8993 NameNode 9585 NodeManager 3765 QuorumPeerMain 9061 DataNode 9143 JournalNode 9726 Jps 9247 DFSZKFailoverController 8339 ResourceManager |
slave2 |
jdk,hadoop,zookeeper |
4996 NodeManager 5141 Jps 3034 QuorumPeerMain 4763 JournalNode 4668 DataNode |
| tar -zxvf hadoop-2.8.2.tar.gz |
| |
| mkdir /opt/hadoop |
| |
| mv hadoop-2.8.2 /opt/hadoop hadoop2.8 |
| |
| 配置环境变量(前面配好了 |
| source /etc/profile |
| |
| cd /opt/hadoop/hadoop2.8/etc/hadoop |
| |
修改 core-site.xml
| vim core-site.xml |
| 在<configuration>节点内加入配置 |
| |
| <configuration> |
| |
| <property> |
| <name>fs.defaultFS</name> |
| <value>hdfs://ns1</value> |
| </property> |
| |
| <property> |
| <name>hadoop.tmp.dir</name> |
| <value>/opt/hadoop/hadoop2.8/data/tmp</value> |
| </property> |
| |
| <property> |
| <name>hadoop.http.staticuser.user</name> |
| <value>root</value> |
| </property> |
| |
| <property> |
| <name>ha.zookeeper.quorum</name> |
| <value>spark1:2181,slave1:2181,slave2:2181</value> |
| </property> |
| |
| </configuration> |
| |
修改 hadoop-env.sh
| export JAVA_HOME=/opt/java/jdk1.8 |
| |
| export HADOOP_CONF_DIR=/opt/hadoop/hadoop2.8/etc/hadoop |
| |
| export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR" |
| |
配置log4j.properties文件
| cd /opt/hadoop/hadoop2.8/etc/hadoop |
| vim log4j.properties |
| |
| log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR |
| |

修改 hdfs-site.xml
| <configuration> |
| |
| <property> |
| <name>dfs.replication</name> |
| <value>3</value> |
| </property> |
| |
| <property> |
| <name>dfs.permissions.enabled</name> |
| <value>false</value> |
| </property> |
| |
| <property> |
| <name>dfs.nameservices</name> |
| <value>ns1</value> |
| </property> |
| |
| <property> |
| <name>dfs.blocksize</name> |
| <value>134217728</value> |
| </property> |
| <property> |
| <name>dfs.ha.namenodes.ns1</name> |
| <value>nn1,nn2</value> |
| </property> |
| |
| |
| <property> |
| <name>dfs.namenode.rpc-address.ns1.nn1</name> |
| <value>spark1:8020</value> |
| </property> |
| |
| |
| <property> |
| <name>dfs.namenode.http-address.ns1.nn1</name> |
| <value>spark1:50070</value> |
| </property> |
| |
| |
| <property> |
| <name>dfs.namenode.rpc-address.ns1.nn2</name> |
| <value>slave1:8020</value> |
| </property> |
| |
| |
| <property> |
| <name>dfs.namenode.http-address.ns1.nn2</name> |
| <value>slave1:50070</value> |
| </property> |
| |
| |
| <property> |
| <name>dfs.namenode.shared.edits.dir</name> |
| <value>qjournal://slave1:8485;slave2:8485/ns1</value> |
| </property> |
| |
| |
| <property> |
| <name>dfs.journalnode.edits.dir</name> |
| <value>/opt/hadoop/hadoop2.8/data/journal</value> |
| </property> |
| |
| |
| <property> |
| <name>dfs.client.failover.proxy.provider.ns1</name> |
| <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> |
| </property> |
| |
| |
| <property> |
| <name>dfs.ha.fencing.methods</name> |
| <value>sshfence</value> |
| </property> |
| |
| |
| <property> |
| <name>dfs.ha.fencing.ssh.private-key-files</name> |
| <value>/root/.ssh/id_rsa</value> |
| </property> |
| |
| |
| <property> |
| <name>dfs.ha.fencing.ssh.connect-timeout</name> |
| <value>30000</value> |
| </property> |
| |
| |
| <property> |
| <name>dfs.ha.automatic-failover.enabled</name> |
| <value>true</value> |
| </property> |
| |
| </configuration> |
| |
修改mapred-site.xml
| cp mapred-site.xml.template mapred-site.xml |
| 在<configuration>节点内加入配置 |
| |
| <property> |
| <name>mapreduce.framework.name</name> |
| <value>yarn</value> |
| </property> |
| |
| <property> |
| <name>mapreduce.jobhistory.address</name> |
| <value>spark1:10020</value> |
| </property> |
| |
| <property> |
| <name>mapreduce.jobhistory.webapp.address</name> |
| <value>spark1:19888</value> |
| </property> |
| |
修改yarn-site.xml文件
| <configuration> |
| <property> |
| <name>yarn.nodemanager.aux-services</name> |
| <value>mapreduce_shuffle</value> |
| </property> |
| |
| |
| <property> |
| <name> yarn.resourcemanager.hostname</name> |
| <value>spark1</value> |
| </property> |
| |
| |
| |
| |
| <property> |
| <name>yarn.resourcemanager.ha.enabled</name> |
| <value>true</value> |
| </property> |
| |
| <property> |
| <name>yarn.log-aggregation.retain-seconds</name> |
| <value>640800</value> |
| </property> |
| |
| <property> |
| <name>yarn.nodemanager.resource.memory-mb</name> |
| <value>1024</value> |
| </property> |
| |
| <property> |
| <name>yarn.nodemanager.resource.cpu-vcores</name> |
| <value>2</value> |
| </property> |
| |
| <property> |
| <name>yarn.log.server.url</name> |
| <value>http://spark1:19888/jobhistory/logs/</value> |
| </property> |
| |
| <property> |
| <name>yarn.resourcemanager.ha.enabled</name> |
| <value>true</value> |
| </property> |
| |
| |
| <property> |
| <name>yarn.resourcemanager.cluster-id</name> |
| <value>rmcluster</value> |
| </property> |
| |
| <property> |
| <name>yarn.resourcemanager.ha.rm-ids</name> |
| <value>spark1,slave1</value> |
| </property> |
| |
| <property> |
| <name>yarn.resourcemanager.hostname.spark1</name> |
| <value>spark1</value> |
| </property> |
| |
| <property> |
| <name>yarn.resourcemanager.hostname.slave1</name> |
| <value>slave1</value> |
| </property> |
| |
| |
| <property> |
| <name>yarn.resourcemanager.zk-address</name> |
| <value>spark1:2181,slave1:2181,slave2:2181</value> |
| </property> |
| |
| |
| <property> |
| <name>yarn.resourcemanager.recovery.enabled</name> |
| <value>true</value> |
| </property> |
| |
| |
| <property> |
| <name>yarn.resourcemanager.store.class</name> |
| <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value> |
| </property> |
| |
| <configuration> |
| |
| 说明: yarn.nodemanager.vmem-check-enabled这个的意思是忽略虚拟内存的检查,如果你是安装在虚拟机上,这个配置很有用,配上去之后后续操作不容易出问题。如果是实体机上,并且内存够多,可以将这个配置去掉 |
| |
修改slaves
| vim /opt/hadoop/hadoop2.8/etc/hadoop/slaves |
| |
将配置好的文件发送到其他机器
| scp -r /opt/hadoop root@slave1:/opt |
| |
| scp -r /opt/hadoop root@slave2:/opt |
| |
启动并测试HA
启动所有机器的zookeeper
| 初始化Hadoop |
| /opt/hadoop/hadoop2.8/bin/hdfs namenode -format |
| |
注意: 这个操作不能多次使用不然容易造成namdenode 的 namespaceID 与 datanode的namespaceID 不一致,从而导致namenode和 datanode的断连。
解决办法: https://blog.csdn.net/lukabruce/article/details/80277846
| 启动 hdfs 和 yarn |
| cd /opt/hadoop/hadoop2.8/sbin |
| |
| 启动hdfs |
| ./start-dfs.sh |
| 启动yarn |
| ./start-yarn.sh |
| |
| [ 启动所有服务可以使用:./start-all.sh ] |
| |

第一次登录会询问是否连接,输入yes ,然后输入密码就可以了 启动成功之后,可以使用jps命令在各个机器上查看是否成功 可以在浏览器输入: ip+50070 和8088端口查看
查看hdfs Web管理页面: http://master:50070

查看Hadoop 的 Application Web管理页面:http://master:8088

| 注意: |
| 开启服务时: start-all.sh 默认只启动一个ResourceManager另一个需要手动到那台机器的 /opt/hadoop/hadoop2.8/sbin |
| 目录下输入: ./yarn-daemon.sh start resourcemanager |
| |
| 关闭服务时: stop-all.sh 默认只关一个ResourceManager所有也需要手动关闭ResourceManager进程 |
| kill -9 进程ID |
| |

配置Spark2.2
| tar -zxvf spark-2.2.0-bin-hadoop2.7.tgz |
| |
| mkdir /opt/spark |
| mv spark-2.2.0-bin-hadoop2.7 /opt/spark/spark2.2 |
| |
| 环境变量配置(略,前面配过了) |
| source /etc/profile |
| |
修改spark-env.sh
| cd /opt/spark/spark2.2/conf/ |
| |
| cp spark-env.sh.template spark-env.sh |
| vim spark-env.sh |
| |
| export SCALA_HOME=/opt/scala/scala2.12.2 |
| export JAVA_HOME=/opt/java/jdk1.8 |
| export HADOOP_HOME=/opt/hadoop/hadoop2.8 |
| export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop |
| export SPARK_HOME=/opt/spark/spark2.2 |
| export SPARK_MASTER_IP=master |
| export SPARK_EXECUTOR_MEMORY=4G |
| |
修改slaves
| mv slaves.template slaves |
| vim slaves |
| |
复制文件到其他机器
| scp -r /opt/spark root@slave1:/opt |
| scp -r /opt/spark root@slave2:/opt |
| |
启动Spark
| cd /opt/spark/spark2.2/sbin |
| ./start-all.sh |
| |
查看Spark Web页面:http://master:8080

配置MySQL5.1.73
| 卸载已经安装的MySQL |
| rpm -qa | grep -i mysql |
| |

| rpm -e mysql-libs-5.1.73-8.el6_8.x86_64; |
| rpm -e --nodeps mysql-libs-5.1.73-8.el6_8.x86_64; |
| |
使用yum安装MySQL
| yum install -y mysql-server mysql mysql-devel |
| |

启动mysql服务
开机自动启动
| chkconfig --list | grep mysqld |
| |

解决初始密码问题
| ERROR 1045 (28000): Access denied for user 'mysql'@'localhost' (using password: NO) |
| |
| ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) |
| |
| 关闭服务 |
| service mysqld stop |
| 启动临时服务 |
| /usr/bin/mysqld_safe --skip-grant-tables |
| 不要关闭这个服务终端 |
| |
| 修改MySQL的root密码为 123456 |
| mysql> use mysql |
| mysql> update user set password=password("123456") where user="root"; |
| mysql> flush privileges; |
| mysql> exit |
| |
| ps -A | grep mysql |
| |
| 4532 pts/0 00:00:00 mysqld_safe |
| 5542 pts/0 00:00:00 mysqld |
| 关闭mysqld服务 |
| kill -9 5542 |
| 开启mysqld服务 |
| service mysqld start |
| |
| 登录MySQL |
| mysql -uroot -p |
| |
| 解决利用sqoop导入MySQL中文乱码的问题(可以插入中文,但不能用sqoop导入中文) |
| 导致导入时中文乱码的原因是character_set_server默认设置是latin1 |
| |
| mysql> show variables like "char%"; |
| |

| 临时修改命令 |
| mysql> set character_set_server=utf8; |
| mysql> quit; |
| |
| character_set_server=utf8 |
| init_connect='SET collation_connection = utf8_unicode_ci' |
| init_connect='SET NAMES utf8' |
| collation-server=utf8_unicode_ci |
| skip-character-set-client-handshake |
| |

| 查看编码方式 |
| mysql> show variables like "char%"; |
| |

配置Hbase
| tar -zxvf hbase-1.2.6-bin.tar.gz |
| |
| mkdir /opt/hbase |
| mv hbase-1.2.6 /opt/hbase/hbase1.2 |
| |
| 配置环境变量(略,前面配过) |
| source /etc/profile |
| |
修改hbase-env.sh
| cd /opt/hbase/hbase1.2/conf |
| vim hbase-env.sh |
| |
| export JAVA_HOME=/opt/java/jdk1.8 |
| export HADOOP_HOME=/opt/hadoop/hadoop2.8 |
| export HBASE_HOME=/opt/hbase/hbase1.2 |
| export HBASE_CLASSPATH=/opt/hadoop/hadoop2.8/etc/hadoop |
| export HBASE_PID_DIR=/root/hbase/pids |
| export HBASE_MANAGES_ZK=false |
| |
| 说明:配置的路径以自己的为准。HBASE_MANAGES_ZK=false 是不启用HBase自带的Zookeeper集群。 |
| |
修改hbase-site.xml
| <configuration> |
| <property> |
| <name>hbase.rootdir</name> |
| <value>hdfs://master:9000/hbase</value> |
| <description>The directory shared byregion servers.</description> |
| </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.master.maxclockskew</name> |
| <value>150000</value> |
| </property> |
| |
| <property> |
| <name>hbase.zookeeper.quorum</name> |
| <value>master,slave1,slave2</value> |
| </property> |
| |
| <property> |
| <name>hbase.tmp.dir</name> |
| <value>/root/hbase/tmp</value> |
| </property> |
| |
| <property> |
| <name>hbase.cluster.distributed</name> |
| <value>true</value> |
| </property> |
| |
| <property> |
| <name>hbase.master</name> |
| <value>master:60000</value> |
| </property> |
| </configuration> |
| |
修改regionservers
复制到其他机器
| scp -r /opt/hbase root@slave1:/opt |
| scp -r /opt/hbase root@slave2:/opt |
| |
启动Hbase
| 启动Hadoop |
| |
| 启动所有机器的zookeeper |
| |
| cd /opt/hbase/hbase1.2/bin |
| ./start-hbase.sh |
| |
查看Hbase Web页面:http://master:16010/master-status
配置Hive
需要之前安装了MySQL
| cd 安装包文件夹目录 |
| tar -zxvf apache-hive-2.1.1-bin.tar.gz |
| mkdir /opt/hive |
| mv apache-hive-2.1.1-bin /opt/hive/hive2.1 |
| |
| |
| export HIVE_HOME=/opt/hive/hive2.1 |
| export HIVE_CONF_DIR=${HIVE_HOME}/conf |
| export PATH=.:${JAVA_HOME}/bin:${SCALA_HOME}/bin:${SPARK_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${ZK_HOME}/bin:${HBASE_HOME}/bin:${HIVE_HOME}/bin:${KAFKA_HOME}/bin:${SQOOP_HOME}/bin:${FLUME_HOME}/bin:${STORM_HOME}/bin:$PATH |
| |
配置hive-site.xml
| cd /opt/hive/hive2.1/conf |
| mv hive-default.xml.template hive-default.xml |
| vim hive-site.xml |
| |
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> |
| <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> |
| <configuration> |
| <property> |
| <name>javax.jdo.option.ConnectionURL</name> |
| <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value> |
| <description>JDBC connect string for a JDBC metastore</description> |
| </property> |
| <property> |
| <name>javax.jdo.option.ConnectionDriverName</name> |
| <value>com.mysql.jdbc.Driver</value> |
| <description>Driver class name for a JDBC metastore</description> |
| </property> |
| <property> |
| <name>javax.jdo.option.ConnectionUserName</name> |
| <value>hive</value> |
| <description>username to use against metastore database</description> |
| </property> |
| <property> |
| <name>javax.jdo.option.ConnectionPassword</name> |
| <value>hive</value> |
| <description>password to use against metastore database</description> |
| </property> |
| </configuration> |
| |
添加MySQL的jdbc jar包到hive
| cd jar包目录 |
| cp mysql-connector-java-5.1.41.jar /opt/hive/hive2.1/lib/ |
| |
在MySQL里面配置hive的元数据库
mysql配置
| service mysql start |
| mysql -u root -p |
| |
| #这个hive数据库与hive-site.xml中localhost:3306/hive的hive对应,用来保存hive元数据 |
| mysql> create database hive; |
| |
| #将所有数据库的所有表的所有权限赋给hive用户,后面的hive是配置hive-site.xml中配置的连接密码 |
| mysql> grant all on *.* to hive@localhost identified by 'hive'; |
| |
| #刷新mysql系统权限关系表 |
| mysql> flush privileges; |
| mysql> quit; |
| |
| start-all.sh |
| |
| 需要hive元数据库初始化 |
| schematool -dbType mysql -initSchema |
| |
| |
| hive |
| |
配置Kafka
| tar -zxvf kafka_2.11-1.0.0.tgz |
| |
| mkdir /opt/kafka |
| mv kafka_2.12-1.0.0 /opt/kafka/kafka1.0.0 |
| |
| 配置环境变量(略,之前配过) |
| source /etc/profile |
| |
修改server.properties
| cd /opt/kafka/kafka1.0.0/config |
| vim server.properties |
| |
| broker.id=0 标示符(多台服务器标示符0,1,2,3,...依次增长) |
| host.name=master 绑定的主机 |
| log.dirs= /opt/kafka/kafka1.0.0/kafka-logs 数据保存的位置 |
| log.retention.hours=168 数据的保留时间 |
| zookeeper.connect=master:2181,slave1:2181,slave2:2181 |
| |
| 配置说明: |
| 标示符(多台服务器标示符0,1,2,3,...依次增长) |
| broker.id=0 |
| 绑定的主机 |
| host.name=master |
| |
| 数据保存的位置 |
| log.dirs= /opt/kafka/kafka1.0.0/kafka-logs |
| 数据的保留时间(小时) |
| log.retention.hours=168 |
| |
| Zookeeper的地址 |
| zookeeper.connect=master:2181,slave1:2181,slave2:2181 |
| |
复制到其他机器并修改相应文件
| scp -r /opt/kafka/ root@slave1:/opt/ |
| |
修改slave1机器的server.properties文件
| broker.id=1 |
| host.name=slave1 |
| |
修改slave2机器的server.properties文件
| broker.id=2 |
| host.name=slave2 |
| |
启动Kafka
启动Hadoop
启动所有机器的zookeeper
启动所有机器的Kafka服务(服务窗口不用关闭)
| nohup /opt/kafka/kafka1.0.0/bin/kafka-server-start.sh /opt/kafka/kafka1.0.0/config/server.properties |
| |

创建主题(新开一个终端窗口)
| /opt/kafka/kafka1.0.0/bin/kafka-topics.sh --create --zookeeper master:2181,slave1:2181 --replication-factor 1 --partitions 1 --topic chenjian |
| |
查看存在的主题
| /opt/kafka/kafka1.0.0/bin/kafka-topics.sh --list --zookeeper master:2181,slave1:2181,slave2:2181 |
| |
模拟发送数据 master -> slava1
| /opt/kafka/kafka1.0.0/bin/kafka-console-producer.sh --broker-list master:9092,slave2:9092 --topic chenjian |
| |

消费数据(接收)
| kafka-console-consumer.sh --zookeeper master:2181,slave1:2181,slave2:2181 --from-beginning --topic chenjian |
| |

配置Sqoop
| tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz |
| |
| mkdir /opt/sqoop |
| mv sqoop-1.4.7.bin__hadoop-2.6.0 /opt/sqoop/sqoop1.4.7 |
| |
| |
| export SQOOP_HOME=/opt/sqoop/sqoop1.4.7 |
| export PATH=.:${JAVA_HOME}/bin:${SCALA_HOME}/bin:${SPARK_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${ZK_HOME}/bin:${HBASE_HOME}/bin:${HIVE_HOME}/bin:${KAFKA_HOME}/bin:${SQOOP_HOME}/bin:$PATH |
| |

添加MySQL的Jdbc jar包
| cp mysql-connector-java-5.1.41.jar /opt/sqoop/sqoop1.4.7/lib |
| |
修改sqoop-env.sh
| cd /opt/sqoop/sqoop1.4.7/conf |
| |
| mv sqoop-env-template.sh sqoop-env.sh |
| vim sqoop-env.sh |
| |
| export HADOOP_COMMON_HOME=/opt/hadoop/hadoop2.8 |
| export HADOOP_MAPRED_HOME=/opt/hadoop/hadoop2.8 |
| export HBASE_HOME=/opt/hbase/hbase1.2 |
| export HIVE_HOME=/opt/hive/hive2.1 |
| |
测试Sqoop
启动MySQL
使用Sqoop测试连接MySQL
| sqoop list-databases --connect jdbc:mysql://192.168.37.128:3306 --username root --password 123456 |
| |

配置Flume
| tar -zxvf apache-flume-1.8.0-bin.tar.gz |
| |
| mkdir /opt/flume/ |
| mv apache-flume-1.8.0-bin.tar.gz /opt/flume/flume1.8.0/ |
| |
| export FLUME_HOME=/opt/flume/flume1.8.0 |
| export FLUME_CONF_DIR=${FLUME_HOME}/conf |
| export PATH=.:${JAVA_HOME}/bin:${SCALA_HOME}/bin:${SPARK_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${ZK_HOME}/bin:${HBASE_HOME}/bin:${HIVE_HOME}/bin:${KAFKA_HOME}/bin:${SQOOP_HOME}/bin:${FLUME_HOME}/bin:$PATH |
| |
修改flume-env.sh
| cd /opt/flume/flume1.8.0/conf/ |
| |
| mv flume-env.sh.template flume-env.sh |
| vim flume-env.sh |
| |

修改Hbase的hbase-env.sh(未出现异常可以忽略)
| 防止测试会报找不到主类的异常需要配置hbase的hbase-env.sh文件 |
| cd /opt/hbase/hbase1.2/conf |
| vim hbase-env.sh |
| |
| 注释掉 HBASE_CLASSPATH |
| |
| export JAVA_CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar |
| |

查看Flume配置版本
| cd /opt/flume/flume1.8.0/bin |
| |
| ./flume-ng version |
| |

测试Flume(avro source)
修改avro.conf
| vim /opt/flume/flume1.8.0/conf/avro.conf |
| |
| a1.sources = r1 |
| a1.sinks = k1 |
| a1.channels = c1 |
| |
| |
| a1.sources.r1.type = avro |
| a1.sources.r1.channels = c1 |
| a1.sources.r1.bind = 0.0.0.0 |
| a1.sources.r1.port = 4141 |
| |
| |
| a1.sinks.k1.type = logger |
| |
| |
| a1.channels.c1.type = memory |
| a1.channels.c1.capacity = 1000 |
| a1.channels.c1.transactionCapacity = 100 |
| |
| |
| a1.sources.r1.channels = c1 |
| a1.sinks.k1.channel = c1 |
| |
启动flume agent a1
| cd /opt/flume/flume1.8.0/bin |
| |
| |
| flume-ng agent -c . -f /opt/flume/flume1.8.0/conf/avro.conf -n a1 -Dflume.root.logger=INFO,console |
| |
向指定文件写入日志
| echo "hello world" > /root/log.00 |
| |
启动avro-client
| cd /opt/flume/flume1.8.0/bin |
| |
| flume-ng avro-client --host localhost -p 4141 -F /root/log.00 |
| |
在启动的服务控制台查看结果

配置Storm
| tar -zxvf apache-storm-0.9.7.tar.gz |
| |
| mkdir /opt/storm/ |
| mv apache-storm-0.9.7 /opt/storm/storm0.9.7/ |
| |
| export STORM_HOME=/opt/storm/storm0.9.7 |
| export PATH=.:${JAVA_HOME}/bin:${SCALA_HOME}/bin:${SPARK_HOME}/bin:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${ZK_HOME}/bin:${HBASE_HOME}/bin:${HIVE_HOME}/bin:${KAFKA_HOME}/bin:${SQOOP_HOME}/bin:${FLUME_HOME}/bin:${STORM_HOME}/bin:$PATH |
| |
| mkdir /opt/storm/storm0.9.7/data |
| |
修改storm.yaml
| cd /opt/storm/storm0.9.7/conf/ |
| |
| storm.zookeeper.servers: |
| - "master" |
| - "slave1" |
| - "slave2" |
| |
| nimbus.host: " master " |
| storm.local.dir: "/opt/storm/data" |
| ui.port: 8888 |
| supervisor.slots.ports: |
| - 6700 |
| - 6701 |
| - 6702 |
| - 6703 |
| |

将文件发送到其他机器
| scp -r /opt/storm/ root@slave1:/opt/ |
| scp -r /opt/storm/ root@slave2:/opt/ |
| |
启动Storm
启动所有机器的Zookeeper
安装顺序执行启动命令
| nohup /opt/storm/storm0.9.7/bin/storm ui > /dev/null 2>&1 & |
| |
| nohup /opt/storm/storm0.9.7/bin/storm nimbus > /dev/null 2>&1 & |
| |
| jps |
| |

在slave1节点执行
| nohup /opt/storm/storm0.9.7/bin/storm supervisor > /dev/null 2>&1 & |
| |

查看Storm Web页面: http://master:8888/index.html

配置Tomcat
- 配置jdk
- 修改Tomcat服务端口默认端口8080 (可选操作)
修改将Tomcat服务器启动时使用的端口,例如改成8000
修改完/home/apache-tomcat-7.0.92/conf
下的server.xml
文件之后,保存退出。

进入tomcat服务器的/home/apache-tomcat-7.0.92/bin
目录,然后执行"./startup.sh
"命令启动Tomcat服务器,如下图所示


- 其他计算Windows访问Tomcat需要Linux防火墙开放Tomcat的端口
修改文件/etc/sysconfig/iptables
,添加一行

重启防火墙 service iptables restart
在Windows输入 http://192.168.37.130:8000/

编辑一个网页 gedit /webPage.html
输入如下内容
| <html> |
| <head>web</head> |
| <body> |
| <b>this is my first web page!</b> |
| </body> |
| </html> |
| |
创建一个文件夹 mkdir /opt/tomcat/tomcat-8.5.43/webapps/testWeb
移动创建网页 mv /webPage.html /opt/tomcat/tomcat-8.5.43/webapps/testWeb
查看网页内容 http://localhost:8000/testWeb/webPage.html
附录Linux远程操作命令
ssh (执行指令)
| ssh 用户名@主机名 “命令” |
| ssh root@slave2 "ls /; echo info >> /test.txt" |
| |
scp (复制文件)
| scp 本机文件 用户名@主机名:文件路径 |
| scp /file root@slave2:/home |
| |
| scp 本机文件 主机名:文件路径 |
| scp -r /directory slave2:/home |
| |
| scp 主机名:文件路径 本地文件路径 |
| scp -r slave2:/test /home |
| |
| scp -P 端口号 主机名:文件路径 本地文件路径 |
| scp -P 22 slave2:/test /home |
| |
rsync (同步文件信息一致)
| rsync -av 本地目录 主机名:目录路径 |
| rsync -av /opt/spark/ slave1:/opt/spark/ |
| |
参考链接:http://www.360doc.com/content/18/0826/10/11881101_781287955.shtml
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· 官方的 MCP C# SDK:csharp-sdk
· 一款 .NET 开源、功能强大的远程连接管理工具,支持 RDP、VNC、SSH 等多种主流协议!
· 提示词工程师自白:我如何用一个技巧解放自己的生产力
· 一文搞懂MCP协议与Function Call的区别
· 如何不购买域名在云服务器上搭建HTTPS服务