一主两从(centos7)java
10.10.0.100 master (namenode)node
10.10.0.101 slave1 (datanode)mysql
10.10.0.102 slave2 (datanode)linux
真机(win7)web
10.10.0.1sql
一、设置网络shell
(1)、设置虚拟机连接方式为NAT方式,NAT设置子网为:10.10.0.0,子网掩码为:255.255.255.0,网关为:10.10.0.254数据库
(2)、真机VMnet8(真机和虚拟机NAT链接的专用网卡)网卡的ip地址为10.10.0.1,子网掩码为:255.255.255.0,网关为:10.10.0.254apache
二、建立虚拟机centos64安装centos7(纯净,之后实验备用)vim
一、完整克隆出master
二、关闭防火墙:systemctl stop firewalld (临时关闭)systemctl disable firewalld(永久关闭)
三、设置ip:vi /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static(静态IP)
ONBOOT=yes(开机启动)
IPADDR=10.10.0.100(IP地址)
GATEWAY=10.10.0.254(网关)
NETMASK=255.255.255.0(子网掩码)
#修改完成后,重启网络使用ip生效:service network restart
ping 10.10.0.1(真机)
三、修改DNS以便上外网
(1)设置不经过网络管理器管理DNS
vi /etc/NetworkManager/NetworkManager.conf
添加:dns=none
(2)新增DNS
vi /etc/resolv.conf
添加:nameserver=10.10.0.254(和网关保持一致,就相似虚拟机master和真机同接一个路由器同样,这样就共享上外网了)
ping www.qq.com进行测试
四、安装vim便于快速编辑文本
rpm -qa|grep vim //查找是否安装了vim
yum -y install vim* //安装vim,须要链接外网
五、修改主机名
vim /etc/hostname
master
六、修改hosts文件
vim /etc/hosts
10.10.0.100 master
10.10.0.101 slave1
10.10.0.102 slave2
一、安装xftp(真机向虚拟机传文件)
二、安装xshell(远程登陆虚拟机更方便操做)
一、下载jdk,并经过xftp传入master虚拟机,解压便可。
(1)事先建立目录,命令:mkdir -p /home/hadoop/download ,说明:download专门放下载的安装包(jdk、hadoop、hbase等),安装于hadoop目录下。
(2)解压:tar -zxvf /home/hadoop/download/jdk-8u181-linux-x64.tar.gz -C /home/hadoop/
二、配置jdk
vim /etc/profile(编辑配置文件)
添加:
export JAVA_HOME=/home/hadoop/jdk1.8.0_181
export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
export PATH=.:$JAVA_HOME/bin:$PATH
source /etc/profile(编译生效)
一、下载安装
解压命令:tar -zxvf /home/hadoop/download/hadoop-2.7.3.tar.gz -C /home/hadoop/
二、配置>
(1)配置环境变量
vim /etc/profile
export JAVA_HOME=/home/hadoop/jdk1.8.0_181
export HADOOP_HOME=/home/hadoop/hadoop-2.7.3
export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
export PATH=.:$JAVA_HOME/bin:$PATH:$HADOOP_HOME/bin:$HADOOP/sbin
source /etc/profile
(2)编辑slaves文件
进入hadoop配置文件所在目录:cd /home/hadoop/hadoop-2.7.3/etc/hadoop/
vim slaves
slave1
slave2
说明:将datanode的主机名写入该文件,删除原来的localhost,让master仅做为namenode用
(3)编辑core-site.xml文件
vim core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<!-- 该临时目录主要存放secondaryNameNode的一些数据,如:fsimage、edit这样数据是为了恢复NameNode节点而准备的 -->
<value>/home/hadoop/hadoop-2.7.3/tmp</value>
</property>
</configuration>
说明:事先要建立tmp目录
(4)编辑hdfs-site.xml文件
vim hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value> <!-- 经过web方式查看secondaryNameNode节点的状态 -->
</property>
<property>
<name>dfs.replication</name><!--DataNode的副本数-->
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/hadoop-2.7.3/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/hadoop-2.7.3/hdfs/data</value>
</property>
</configuration>
说明:须要建立hdfs目录,但不须要建立其下的name和data,格式化后会自动建立这两目录。
(5)编辑yarn-site.xml文件(若是修改后必定要复制到其它节点)
vim yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>dfs.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
</configuration>
(6)编辑mapred-site.xml文件
重命名:mv mapred-site.xml.template mapred-site.xml
编辑:vim mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<final>true</final>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
(7)编辑hadoop-env.sh
vim hadoop-env.sh
export JAVA_HOME=/home/hadoop/jdk1.8.0_181
(8)编辑yarn-env.sh
vim yarn-env.sh
export JAVA_HOME=/home/hadoop/jdk1.8.0_181
一、修改slave1的ip
vim /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR=10.10.0.101(IP地址)
二、修改slave1的主机名
vim /etc/hostname
slave1
三、修改slave2的ip
vim /etc/sysconfig/network-scripts/ifcfg-ens33
IPADDR=10.10.0.102(IP地址)
四、修改slave1的主机名
vim /etc/hostname
slave2
以master为例
一、生成密钥:ssh-keygen -P ""
在/root/.ssh目录下能够看到有authorized_keys、id_rsa、id_rsa.pub三个文件
二、将master的公钥id_rsa.pub复制到master、slave一、slave2的authorized_keys
(1)ssh-copy-id master //登陆测试:ssh master//退出:exit
(2)ssh-copy-id slave1
(3)ssh-copy-id slave2
三、slave1和slave2重复上述步骤2
第一次启动须要格式化:hdfs namenode -format
启动:start-all.sh(至关于start-hdfs.sh和start-yarn.sh)
查看master进程:jps
Jps、NameNode、SecondaryNameNode、ResourceManager
查看slave1进程:jps
Jps、DataNode、NodeManager
真机浏览器访问hadoop
http://10.10.0.100:50070 //50070是namenode默认的端口号
查看节点的状况:http://10.10.0.100:8088 //8088是ResourceManager默认的端口号
运行wordcount:
一、在hdfs上新建目录
hdfs dfs -mkdir -p /input/wordcount(输入目录)
hdfs dfs -mkdir -p /output/wordcount(输出目录)
二、新建2个文本文件txt一、txt2并传入hdfs,做为运行所须要的数据
hdfs dfs -put /tmp/txt* /input/wordcount
三、运行hadoop自带的wordcount程序
hadoop jar /home/hadoop/hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar /input/wordcount /output/wordcount
四、观察结果:hdfs dfs -ls output/wordcount
一、安装
进入download目录:cd /home/hadoop/download/
解压:tar -zxvf zookeeper-3.4.9 -C ..(..为父目录即hadoop)
二、配置环境变量
export ZOOKEEPER_HOME=/home/hadoop/zookeeper-3.4.9
export PATH=$PATH:$ZOOKEEPER_HOME/bin(在末尾加zookeeper的bin路径)
三、修改配置文件
先建立文件夹:
mkdir -p /home/hadoop/zookeeper-3.4.9/data
mkdir -p /home/hadoop/zookeeper-3.4.9/log
复制zoo_sample.cfg:
cd /home/hadoop/zookeeper-3.4.9/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
dataDir=/home/hadoop/zookeeper-3.4.9/data
dataLogDir=/home/hadoop/zookeeper-3.4.9/log
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
在dataDir对应的目录下建立myid并输入内容:
cd /home/hadoop/zookeeper-3.4.9/data
echo '1' >myid
四、复制zookeeper-3.4.9到slave一、slave2
scp -r /home/hadoop/zookeeper-3.4.9 slave1:/home/hadoop/
修改slave1的data目录下myid为2
vim /home/hadoop/zookeeper-3.4.9/data/myid
2
scp -r /home/hadoop/zookeeper-3.4.9 slave2:/home/hadoop/
修改slave2的data目录下myid为3
vim /home/hadoop/zookeeper-3.4.9/data/myid
3
五、在三台机器上分别启动zkServer
/home/hadoop/zookeeper-3.4.9/bin/zkServer.sh start
查看进程:jps
2225 NameNode
3889 Jps
2564 ResourceManager
3048 QuorumPeerMain(增长)
2413 SecondaryNameNode
查看状态:zkServer.sh status
一、安装
进入download目录:cd /home/hadoop/download/
解压:tar -zxvf hbase-1.2.3 -C ..(..为父目录即hadoop)
二、配置环境变量
vim /etc/profile
export HBASE_HOME=/home/hadoop/hbase-1.2.3
末尾添加bin到path:
:$HBASE_HOME/bin
source /etc/profile
三、修改配置文件
进入配置目录:cd /home/hadoop/hbase-1.2.3/conf
vim hbase-env.sh
export JAVA_HOME=/home/hadoop/jdk1.8.0_181
export HBASE_MANAGES_ZK=false
vim hbase.site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hadoop/zookeeper-3.4.9</value>
</property>
</configuration>
vim regionservers
slave1
slave2
说明:regionservers文件中列出了你但愿运行的HRegionServer
四、复制hbase-1.2.3到slave一、slave2
scp -r /home/hadoop/hbase-1.2.3 slave1:/home/hadoop
scp -r /home/hadoop/hbase-1.2.3 slave2:/home/hadoop
五、启动hbase
启动以前先要启动hadoop集群
启动zookeeper(zkServer.sh start),注意:三台都要启动
启动hbase
/home/hadoop/hbase-1.2.3/bin/start-hbase.sh
查看master进程:jps
2225 NameNode
2564 ResourceManager
4245 Jps
4070 HMaster(启动hbase增长的)
3048 QuorumPeerMain(启动zookeeper增长的)
2413 SecondaryNameNode
查看slave进程:jps
2057 DataNode
2749 HRegionServer(启动hbase增长的)
2367 QuorumPeerMain(启动zookeeper增长的)
2895 Jps
在浏览器中输入http://master:16010就能够在界面上看到hbase的配置了
六、启动hbase shell
hbase shell
注:退出hbase shell:exit
关闭hbase:stop-hbase.sh
tar -zxvf /home/hadoop/download/apache-hive-2.1.0-bin.tar.gz ..
(1)配置环境变量:vim /etc/profile
export $HIVE_HOME=/home/hadoop/apache-hive-2.1.0-bin
添加path::$HIVE_HOME/bin
从新编译:source /etc/profile
测试:hive --version
(2)修改hive-site.xml(在conf目录下)
<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://10.10.0.1:3306/hive?createDatabaseIfNotExist=true&characterEncoding=UTF-8&useSSL=false</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>root</value> </property>
说明:
本配置主要是将数据库的元信息保存在关系型数据库mysql中,默认是保存在derby数据库。
真机(win7)上安装mysql服务,用户名:root 密码:root ,最好在真机的mysql数据库上建立hive数据库,保存hive中建立的全部数据库的元信息,若是不建立的话,配置为自动建立。
下载mysql驱动mysql-connector-java-5.1.44.jar到hive目录下的子目录lib中。
(3)初始化mysql元数据
schematool -dbType mysql -initSchema
一、安装
tar -zxvf /home/hadoop/download/scala-2.11.0.tgz ..
二、配置
vim /etc/profile
export $SCALA_HOME=/home/hadoop/scala-2.11.0
添加path::$SCALA_HOME/bin
三、启动
scala
退出scala shell::quit
一、安装
tar -zxvf /home/hadoop/download/spark-2.3.0-bin-hadoop2.7.tgz -C ..
二、配置
(1)配置环境变量
vim /etc/profile
export SPARK_HOME=/home/hadoop/spark-2.3.0-bin-hadoop2.7
添加path::$SPARK_HOME/bin
source /etc/profile
(2)修改spark-env.sh($SPARK_HOME/conf)
将spark-env.sh.template重命名为spark-env.sh
vim spark-env.sh
export JAVA_HOME=/home/hadoop/jdk1.8.0_181
export SCALA_HOME=/home/hadoop/scala-2.11.0
export HADOOP_HOME=/home/hadoop/hadoop-2.7.3
export HADOOP_CONF_DIR=/home/hadoop/hadoop-2.7.3/etc/hadoop
export SPARK_MASTER_IP=master
export SPARK_WORKER_MEMORY=1024M
(3)修改slaves
vim slaves
master
slave1
slave2
(4)将配置好的spark目录复制到其余节点
scp -r $SPARK_HOME slave1:/home/hadoop/
scp -r $SPARK_HOME slave2:/home/hadoop/
三、启动spark
一、启动hadoop
$HADOOP_HOME/sbin/start-all.sh
二、启动spark
$SPARK_HOME/sbin/start-all.sh
三、web查看
master:8080
四、使用sbt打包运行spark程序
(1)下载sbt-launch.jar放入安装目录(/home/hadoop/sbt)
(2)建立shell脚本文件用于启动sbt打包程序
文件名:/home/hadoop/sbt/sbt
SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
java $SBT_OPTS -jar /home/hadoop/sbt/bin/sbt-launch.jar "$@"
chmod -R 777 /home/hadoop/sbt/sbt(使该文件件可执行)
(3)建立spark应用程序
/root/sparkApp/src/main/scala/Hello.scala
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
object Hello{
def main(args:Array[String]){
val logFile="file:///tmp/txt1"
val conf=new SparkConf().setAppName("my spark app")
val sc=new SparkContext(conf)
val logData=sc.textFile(logFile,2).cache()
val numA=logData.filter(line=>line.contains("a")).count()
val numB=logData.filter(line=>line.contains("b")).count()
println("a:%s,b:%s".format(numA,numB))
}
}
//统计txt1中文本中a,b出现的次数
(4)建立应用程序信息文件(~/sparkApp/hello.sbt)
name:="My Spark Project"
version:="1.0"
scalaVersion:="2.11.0"
libraryDependencies+="org.apache.spark" %% "spark-core" % "1.6.0"
用于声明应用程序信息及与spark的依赖关系
(5)在应用程序的根目录下打包spark程序
cd ~/sparkApp
/home/hadoop/sbt/sbt package
(6)使用spark-submit提交到spark上运行
spark-submit --class "Hello" /root/sparkApp/target/scala-2.11/my-spark-project_2.11-1.0.jar
结果:a:2,b:0