1.虚拟机本地部署安装
1.1准备文件
一个是虚拟机软件:VMwareWorkstation.rar
一个是要安装在虚拟机中的系统镜像文件:CentOS-7-x86_64-DVD-1908.iso
1.2虚拟机及系统安装
虚拟机的安装和系统的安装都是向导式的,不做记录。
1.3配置虚拟机的网络
此处是虚拟机安装的重点,虚拟机新建并并关联镜像文件后,系统安装基本完成。网络处的配置主要是用NAT模式。
安装完系统后,登录进去,编辑/etc/sysconfig/network-scripts/ifcfg-ens33文件,截图:
这两个是修改的地方:
ONBOOT=yes
BOOTPROTO=static
新添加内容:
IPADDR=192.168.139.130 虚拟机ip
NETMASK=255.255.255.0 默认子网掩码
GATEWAY=192.168.139.2 网关
上面配置的参考依据是点击虚拟机主界面的编辑---虚拟网络编辑器,页面如下:
点击其中的NAT设置,其中的子网掩码和网关就是上面的设置的来源。其中静态ip设置的来源依据则是点击DHCP后,查看ip范围,下图可以看到是在128~254范围内即可。
配置完虚拟机这边的系统文件后,还需要配置本机的网络设置,在网络和共享中心,选择更改适配器可以看到下面页面:
红框标出的是我们需要配置的,选中右击选择属性
选中ipv4,在点击属性进行配置,ip只要是在刚才查看的范围即可。
置完成后,可以在虚拟机系统的命令行进行ping测试: ping www.baidu.com
2.Hadoop部署安装
2.1文件准备和环境准备(java)
首先检测是否具备java环境
java -version
不具备下载安装jdk,文件以jdk-8u121-linux-x64.tar.gz为例
解压命令:tar -zxvf jdk-8u121-linux-x64.tar.gz
解压后为jdk1.8.0_121,解压完毕后,配置环境变量
命令:vi ~/.bash_profile
添加内容(路径根据实际情况设定):
export JAVA_HOME=/root/java/jdk1.8.0_121
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
添加以上内容后保存并执行
source ~/.bash_profile
使文件立即生效。
配置完毕,用java -version 命令检验,当出现如下截图时,表示java安装成功。
2.2文件以hadoop-2.6.5.tar.gz为例。具体步骤
解压文件
tar -zxvf hadoop-2.6.5.tar.gz
解压后文件为hadoop-2.6.5
配置环境变量:
export HADOOP_HOME=/root/java/hadoop-2.6.5
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
执行 source ~/.bash_profile 使文件立即生效。
配置文件配置
目录所在:hadoop-2.6.5下的 etc/hadoop/
- core-site.xml
fs. defaultFS: 默认文件系统的名称
hadoop.tmp.dir:是 hadoop文件系统依赖的基本配置,很多配置路径都依赖它,它的默认位置在/tmp/{$user}下面
io.file.buffer.size: 在读写文件时使用的缓存大小
hadoop.proxyuser.hadoop.hosts与hadoop.proxyuser.hadoop.groups
配置代理用户。当启用k8s认证的时候有用。
添加内容为:
<property>
<name>fs.defaultFS</name>
<value>hdfs://s204:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/root/hadoop/tmp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131702</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
- hdfs-site.xml
dfs.namenode.name.dir:HDFS文件系统的元信息保存在什么目录
dfs.datanode.data.dir:HDFS文件系统的数据保存在什么目录
dfs.replication:分片数量也就是备份数
dfs.namenode.secondary.http-address:二级nameNode的web监控页面访问路径
dfs.webhdfs.enabled:提供HDFS的RESTful接口,可通过此接口进行HDFS文件操作
配置内容:
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/root/hadoop/hdfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/root/hadoop/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>s204:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
- mapred-site.xml
mapreduce.framework.name:mapreduce的管理框架用的是yarn
mapreduce.jobhistory.webapp.address:mapreduce执行历史记录的访问路径
mapreduce.jobhistory.address:
配置内容:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>s204:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>s204:19888</value>
</property>
- yarn-site.xml
参考:https://www.cnblogs.com/yinchengzhe/p/5142659.html
配置内容:
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>s204:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>s204:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>s204:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>s204:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>s204:8088</value>
</property>
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>6078</value>
</property>
- yarn-env.sh
编辑java地址 export JAVA_HOME=/usr/java/jdk1.8.0_121
找到JAVA_HEAP_MAX=-Xmx1000m
改为 JAVA_HEAP_MAX=-Xmx1024m
- slaves
清空添加 s205
s206
- 配置好后,然后克隆到其他两台机器上,唯一区别的配置在
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/root/hadoop/hdfs/data</value>
</property>
不同机器上改路径不能一样;
file:/root/hadoop/hdfs/data
file:/root/hadoop/hdfs/data/205
file:/root/hadoop/hdfs/data/206
- 启动(都是在master主机下操作即可)
执行编译在hadoop根目录下
./bin/hdfs namenode –format
结果倒数第五行出现
Exiting with status 0 则为成功
然后启动
./sbin/start-all.sh
启动成功的截图:
主机s204执行jps
S205执行jps
s206同上。
启动成功后,主要的web页面访问:
Yarn管理界面
s204:8088/
Hdfs页面:
点击最后一个菜单,可以看到hdfs系统的目录文件的具体情况,文件也可下载。
3.Hive部署安装
Hive需要依赖hadoop存在,所以在安装前部署前需要保证hadoop环境已具备,此外hadoop还需要本地数据库用来存储元数据,可以是mysql,oracle等。
3.1Mysql安装
3.1.1安装mysql
1.安装前先检查是否有安装的mysql,有则清除,具体步骤参考
https://www.cnblogs.com/sky-cheng/p/10564604.html
2.准备rpm文件:mysql-community-release-el7-5.noarch.rpm
3.安装步骤:
--执行命令 rpm -ivh mysql-community-release-el7-5.noarch.rpm
--执行命令:yum -y install mysql-community-server
3.1.2设置root用户密码和权限
1.设置root密码
登录到mysql,依次执行以下命令:
use mysql;
update user set password=password('123') where user='root' and host='localhost';
flush privileges;
2.授权
登录到mysql,依次执行以下命令:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
flush privileges;
3.1.3创建hive用户,并授权
1.CREATE USER 'hive' IDENTIFIED BY 'hive';
2.GRANT ALL PRIVILEGES ON *.* TO 'hive'@'master' WITH GRANT OPTION;
3.flush privileges;
3.1.4登录hive用户,并创建hive专用的hive数据库。
登录命令:mysql -u hive -p 回车输入密码再回车即可。
创建数据库:create database hive;
3.2Hive安装
1.文件准备
文件:apache-hive-2.3.6-bin.tar.gz
2.安装
解压:tar -zxvf apache-hive-2.3.6-bin.tar.gz
配置环境变量:vim ~/.bash_profile
添加内容:
export HIVE_HOME=/root/java/apache-hive-2.3.6-bin
export PATH=$PATH:$HIVE_HOME/bin
执行source ~/.bash_profile 立即生效。
3.文件配置
配置conf/hive-site.xml
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master:3306/hive?characterEncoding=UTF-8</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://s204:9083</value>
</property>
编辑conf/hive-env.sh
添加以下内容:
export JAVA_HOME=/root/java/jdk1.8.0_121 ##Java路径
export HADOOP_HOME=/root/java/hadoop-2.6.5 ##Hadoop安装路径
export HIVE_HOME=/root/java/apache-hive-2.3.6-bin ##Hive安装路径
export HIVE_CONF_DIR=$HIVE_HOME/conf
编辑bin/hive-config.sh
4.将本地数据库的驱动包放到lib目录下,以mysql为例,则驱动jar包为
mysql-connector-java-5.1.44.jar
4.初始化hive相关数据表
在bin目录下执行命令:schematool -dbType mysql -initSchema
5.启动(执行目录在bin下)
启动metastore远程:hive --service metastore &
进入hive,执行输入hive
===========================安装中的问题=======================
- 虚拟机配置中,其中有个ifcfg-lo文件,千万不要动。
- 第一个就是没有执行namenode –format的命令导致hadoop启动失败。
- 对于查看mapreduce执行历史记录的s204:19888进不去。
这是因为查看历史的模块还需要单独启动个脚本。
执行目录是在sbin下
./mr-jobhistory-daemon.sh start historyserver
停止:
./mr-jobhistory-daemon.sh stop historyserver
4. Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
这种错误是因为没有启动metastore
5.出现如下图,执行insert … select …时候卡死
这时需要查看下slave节点上的nodemanger是否正常。
查看命令jps
重新启动hadoop,保证nodemanager正常即可。
6.Linux上hive命令行写错不能使用Backspace,设置
7.Hadoop启动时一直需要输入密码,主要是因为ssh没有做免密登录设置。