研究院指导笔记整理
前期
主要是虚拟机的下载、安装、创建、配置。没记什么,因为早就弄好了。
一些基础的命令。
解压
1 | tar -zxvf jdk-8u251-linux-x64.tar.gz -C /usr/local/ |
更改网络配置
1 | vim /etc/sysconfig/network-scripts/ifcfg-ens33 |
1 | dhcp改static |
1 | service network restart |
配环境变量
1 | vim /etc/profile |
1 | source /etc/profile |
防火墙
1 | 启动: systemctl start firewalld |
主机名
1 | hostnamectl set-hostname px02 && bash |
分发
1 | scp -r hadoop/ px03:/usr/local/hadoop-2.9.2/etc/ |
ssh
1 | ssh-keygen -t rsa && ssh-copy-id 地址 |
day03 应该是 一台
-
1
export JAVA_HOME=/usr/local/jdk1.8.0_251
-
core-site.xml
1
2
3
4
5
6
7
8
9
10
11<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop100:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop-2.9.2/tmp</value>
</property> -
hdfs-site.xml
1
2
3
4
5<!-- 指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property> -
启动
1
2
3
4
5
6
7
8
9格式化NameNode(第一次启动时格式化,以后就不要总格式化)
hadoop namenode -format
启动NameNode
hadoop-daemon.sh start namenode
启动DataNode
hadoop-daemon.sh start datanode
(当时应该没有执行)hadoop-daemon.sh start secondarynamenode
注意配置环境变量,否则要写全路径。启动后用jps(要先配置java)查看
web页面:机子ip:50070
day04 第一台伪分布+多一个配置
-
hadoop-env.sh JAVA_HOME
-
vi core-site.xml 不变
1
2<property><name>fs.defaultFS</name><value>hdfs://ip:9000
hadoop.tmp.dir /usr/local/hadoop-2.9.2/tmp -
vi hdfs-site.xml
1
2
3
4
5
6
7
8
9<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 指定 Hadoop 辅助名称节点主机配置 ,可以不设置,默认在和namenode在同一台机器上 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:50090</value>
</property> -
vim slaves
1
2
3192.168.100.102 去掉localhost 这是本机 下面是其他机
192.168.100.103
192.168.100.104 -
杂
1
2
3
4
5
6
7拷贝到其他机器 profile jdk hadoop
scp -r /usr/local/hadoop-2.9.2/ 192.168.100.103:/usr/local/
为了方便生成密钥 单向的
ssh-keygen -t rsa
ssh-copy-id 地址
如果通过其他方式比如xftp传输, Permission denied 命令行输入 sudo chmod -R 777 /(java_home的完整路径) 同理 -
启动
1
2
3
4
5格式化 他说你地址写那个就在那里格式化 但我不清楚那个地址 我在第2台机子上格的
hadoop namenode -format
如果没改主机名,会出现localhost/127.0.0.1 而不是分配好的ip地址
hostnamectl set-hostname px02
bash -
杂
1
2
3
4
5
6映射 他说用映射比较好,主机名ip都行
vim core-site.xml 把ip改为主机名
改了要分发一下
vim /etc/hosts
ip 名
都改或分发 -
启动
1
start-dfs.sh
-
web
1
http://192.168.100.102:50070/ 应该是namenode的机子ip
day05
搭建 yarn 昨天hdfs
-
vim yarn-env.sh
1
JAVA_HOME /usr/local/jdk1.8.0_251/
-
vim yarn-site.xml
1
2
3
4
5
6
7
8
9
10<!-- reducer获取数据的方式-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定yarn的resourcemanager的地址-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>px03</vslue>
</property> -
vim mapred-env.sh
1
JAVA_HOME
-
mapred-site.xml
1
2
3
4
5
6
7
8cp mapred-site.xml.template mapred-site.xml
拷贝一份,以防写错
vim mapred-site.xml
<!--指定mr在yarn上运行-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property> -
分发
1
24个文件 可偷懒分发hadoop文件夹 可用主机名或ip
scp -r hadoop/ px03:/usr/local/hadoop-2.9.2/etc/ -
启动
1
2
3
4
5resourcemanage在那台机子就在那台启动,比如我的px03
要先启动hdfs
start-dfs.sh(我是在px02上启动的 我的机子 02 03 04)
再启动yarn 若未配置免密则须输密码
start-yarn.sh(我03上启动的) -
web页面
1
2http://192.168.100.103:8088/ ip为resourcemanage的机子的ip
注:后面的再次配置会把端口改为18088 -
如果觉得不方便,把所有主机写在同一台,secondnamenode去掉
hdfs基本命令
-
fs和dfs
1
2bin/hadoop fs具体命令OR bin/hdfs dfs具体命令。
dfs是fs的实现类。 -
命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21帮助
hadoop fs -help 命令
-ls
hadoop fs -ls / /根目录
-mkdir 创建目录
hadoop fs -mkdir / 可在hdfs web界面看 ip/explorer.html#/
从本地(不是windows)剪切粘贴到HDFS
hadoop fs -moveFromLocal 文件 目录
查看文件
hadoop fs -cat 文件
追加
hadoop fs -appendToFile 源文件 目标文件
从本机拷贝 等同于 -put
-copyFromLocal 文件 目录
拷贝回本地 等同于 -get
-copyToLocal 文件 目录
HDFS中拷贝到另一个路径
-cp 文件 目录
移动 -mv
感觉就是linux命令的结合
wordcount案例
-
准备
1
2
3
4目录
/usr/local/hadoop-2.9.2/share/hadoop/mapreduce
文件
hadoop-mapreduce-examples-2.9.2.jar -
运行
1
2
3hadoop jar hadoop-mapreduce-examples-2.9.2.jar wordcount(主类) /wordcount.txt(输入) /output(输出)
http://192.168.100.103:8088/cluster/ 可看
他的在204 我的未在04而在02 猜测随机 -
查看
1
2
3可用以下命令查看
hadoop fs -cat /output/part-r-00000
他会出现统计的频率
写程序前
- windows的jdk配置
- windows配置hadoop
- 更改env的JAVA_HOME
- 添加HADOOP_HOME
- 添加Path,%HADOOP_HOME%\bin 绝对路径相对路径随意
- 验证 cmd hadoop
新命令
杀死进程 kill -9 进程号
day06
zookeeper 注:他此时hdfs和yarn是启动好的
-
解压
1
tar -zxvf 文件 -C 目录
-
改配置
1
2
3
4
5
6
7
8
9创建data目录
在data下创建文件myid,里面写1(id为1)
在conf下
拷贝文件 cp zoo_sample.cfg zoo.cfg
修改dataDir为 /usr/local/zookeeper-3.4.13/data/
添加 (id) (主机或ip)
server.1=px02:2888:3888
server.2=px03:2888:3888
server.3=px04:2888:3888 -
分发
1
2
3scp -r /usr/local/zookeeper-3.4.13/ px03:/usr/local/
scp -r /usr/local/zookeeper-3.4.13/ px04:/usr/local/
修改data下的myid -
启动
1
2
3
4在bin目录下
./zkServer.sh start
三台都要敲命令
# 注:配置环境变量会简单点 -
查看状态
1
2
3
4./zkServer.sh status
出现Mode: follower、Mode: leader成功了
进程为QuorumPeerMain
注:他说(意为):zkp一般搭建奇数台,三台中正常第二台为leader
编程(windows)
-
idea导包
1
2
3
4share\hadoop下的
common和lib、hdfs和lib、mapreduce和lib、yarn和lib
有多余的,但老师他说不管
会出现jdiff,他说选不选无所谓,他没选 -
小技巧:idea里 .var可以方便声明变量
-
代码
-
mapper
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46/**
* Copyright (C), 2015-2020, px有限公司
* FileName: WordCounttMapper
* Author: 15081
* Date: 2020/7/6 15:51
* Description:
* History:
* <author> <time> <version> <desc>
* px 修改时间 版本号 描述
*/
package cn.org.sibd;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
import java.io.IOException;
/**
* 〈一句话功能简述〉<br>
* 〈〉
*
* @author 15081
* @create 2020/7/6
* @since 1.0.0
*/
//其中Text涉及序列化和反序列化 相当于String
public class WordCounttMapper extends Mapper<LongWritable, Text,Text, IntWritable> {
Text kkey = new Text();
IntWritable vvalue = new IntWritable(1);
protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
//获取第一行
String line = value.toString();
//划分
String[] words = line.split(" ");
for (String word : words) {
kkey.set(word);
//输出
context.write(kkey,vvalue);
}
}
} -
reducer
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44/**
* Copyright (C), 2015-2020, px有限公司
* FileName: WordCountReducer
* Author: 15081
* Date: 2020/7/6 15:53
* Description:
* History:
* <author> <time> <version> <desc>
* px 修改时间 版本号 描述
*/
package cn.org.sibd;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
import java.io.IOException;
/**
* 〈一句话功能简述〉<br>
* 〈〉
*
* @author 15081
* @create 2020/7/6
* @since 1.0.0
*/
/*
hadoop 1
hadoop 1
java 1
会默认排序
*/
public class WordCountReducer extends Reducer<Text, IntWritable,Text,IntWritable> {
IntWritable v = new IntWritable();
protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {
int sum = 0;
for (IntWritable value : values) {
sum+=value.get();
}
v.set(sum);
context.write(key,v);
}
} -
driver
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56/**
* Copyright (C), 2015-2020, px有限公司
* FileName: WordCountDriver
* Author: 15081
* Date: 2020/7/6 15:53
* Description:
* History:
* <author> <time> <version> <desc>
* px 修改时间 版本号 描述
*/
package cn.org.sibd;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import java.io.IOException;
/**
* 〈一句话功能简述〉<br>
* 〈〉
*
* @author 15081
* @create 2020/7/6
* @since 1.0.0
*/
public class WordCountDriver {
public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
//连接
Configuration conf = new Configuration();
//job实例对象
Job job = Job.getInstance(conf);
//把类联系起来
job.setJarByClass(WordCountDriver.class);
job.setReducerClass(WordCountReducer.class);
job.setMapperClass(WordCounttMapper.class);
//map的输出类型
job.setMapOutputKeyClass(Text.class);
job.setMapOutputValueClass(IntWritable.class);
//最终的输出类型 不要加reduce
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
//输入路径
//FileInputFormat.setInputPaths(job,new Path("D:\\IntelliJ IDEA 2020.1.1\\WorkSpace\\mapreduce-project\\input\\wordcount.txt"));
FileInputFormat.setInputPaths(job,new Path("./input/wordcount.txt"));
//输出路径 不用我们去创建,会报错
FileOutputFormat.setOutputPath(job,new Path("./output"));
//执行
boolean resout = job.waitForCompletion(true);
System.out.println(resout?1:0);
}
}
-
-
输入文本
1
2
3
4hadoop java
java zookeeper
hive hadoop
hive java -
每次运行要删除output文件夹 当然可用代码删除
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58File file = new File("./output");
if (file.exists()) {
new FileDelete("./output");
}
//自行拆分
/**
* Copyright (C), 2015-2020, px有限公司
* FileName: FileDelete
* Author: 15081
* Date: 2020/7/6 19:08
* Description:
* History:
* <author> <time> <version> <desc>
* px 修改时间 版本号 描述
*/
package cn.org.sibd;
import java.io.File;
/**
* 〈一句话功能简述〉<br>
* 〈〉
*
* @author 15081
* @create 2020/7/6
* @since 1.0.0
*/
public class FileDelete {
public FileDelete(String path) {
this.deleteFileAndFolder(path);
}
public boolean deleteFileAndFolder(String path){
File file = new File(path);
if (!file.exists()) {
return false;
}
if (file.isFile()) {
return file.delete();
}
File[] files = file.listFiles();
for (File f : files) {
if(f.isFile()){
if(!f.delete()){
System.out.println(f.getAbsolutePath()+" delete error!");
return false;
}
}else{
if(!this.deleteFileAndFolder(f.getAbsolutePath())){
return false;
}
}
}
return file.delete();
}
}
新知识
移动
1 | mv [-fiv] source destination |
day07+day08+day09+day10
day07 java基础
真的基础,所以没记,看看。
day08 假hive
-
数据仓库 比mysql东西多
-
mysql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21下载yum库
wget http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum -y install 包
我使用的方式是:
yum -y install http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
安装数据库
yum -y install mysql-community-server
重启mysql
systemctl restart mysqld
查找密码
grep "password" /var/log/mysqld.log
登录
mysql -uroot -p密码
修改密码强度
set global validate_password_policy=0;
set global validate_password_policy=low;
set global validate_password_length=6;
修改密码
alter user 'root'@'localhost' identified by '123456';
重启mysql
mysql简单练习
day09 要假不假hive
-
使得不只本地可以连接数据库
1
2update user set host='%' where user='root';
至于刷新flush privileges;他没执行。 -
解压
1
2tar -zxvf apache-hive-2.3.7-bin.tar.gz -C /usr/local/
他说配不配都可以 配置环境变量 到bin目录 /etc/profile 记得生效一下 -
到conf目录下
1
2
3
4
5cp hive-env.sh.template hive-env.sh
vim hive-env.sh
HADOOP_HOME=/usr/local/hadoop-2.9.2
export HIVE_CONF_DIR=/usr/local/apache-hive-2.3.7-bin/conf
export HIVE_AUX_JARS_PATH=/usr/local/apache-hive-2.3.7-bin/lib1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29创建hive-site.xml
vim hive-site.xml
<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>root</value>
<description>Username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
<description>password to use against metastore database</description>
</property>
</configuration> -
杂
1
2
3
4
5上传mysql-connector-java-5.1.48.jar到../lib目录下
他说 2点多和1点多不一样 1点多可以直接起动了 2点多要初始化
schematool -dbType mysql -initSchema 如果没配环境变量,用./也可以
注:他机子变了,但我机子没变,我在px02(020304)上改动.而且我的hdfs、yarn、zookeeper没关,他报错了,而我没报错,但这不能算好消息。他把HIVE_AUX_JARS_PATH注了,而我没注。
他说他删了一个库,创建不上了。他在ConnectionURL里加了 &useSSL=false(我没加),为了不看警告。 -
启动
1
2
3hive
测试show databases;
我打错了,打成 show databses;报了atatat的错。打对就好了
day10 hive 注:他不用101了而用102,但还是连的101,应该是克隆后没改192.168.1.1
杂一
他重新搭建了hive。没配HIVE_AUX_JARS_PATH
。(字体颜色有问题,有些字符看不清。)&useSSL=false
改为了; useSSL=false
。&
是字符&
报错了。他说没先start-dfs.sh。 show databases;
没出来,他说其他地方没有权限,其实开了(%)。他说防火墙没关。还是。他一直有RunJar的进程,而我没有。他hadoop的``hadoop.tmp.dir值是
/usr/local/hadoop/hadoop-2.9.2/tmp`,不是他原先教我门设置的,虽感觉在那都可。重搭了。
杂二
我还是在hive-site.xml 添加上了&useSSL=false
,不想看SSl的警告。
Hive SQL语法总结 可在web页面看一些东西
1 | # 创建数据库 可加上 if not exists # 在HDFS上/user/hive/warehouse |
day11+day12+day13
day11 续hive
1 | # 重命名表 |
他使用的文档可在网络上找到 关键词:尚硅谷 [文档关键词,例如:hive]
day12 续hive
另一种启动hive
1 | 不管那种方式都要start-dfs.sh |
集合数据类型
1 | 集合数据类型 struct、map、array |
day13 python 豆瓣有反扒,注意
1 | #! /usr/bin/env python |
day14 按照手册搭建+day15 又简单爬一边
day14
-
由于我们是本地克隆,需要修改ip。
vim /etc/sysconfig/network-scripts/ifcfg-ens33
1
2
3
4
5
6dhcp改static
IPADDR=192.168.100.200
NETMASK=255.255.255.0
GATEWAY=192.168.222.2
DNS1=223.5.5.5
DNS2=223.6.6.6最后要重启网络
service network restart
注:xshell的隧道钩去掉。VT模式里初始化数字键盘选设置为普通,可使用小键盘。
-
每台修改主机名。记忆
hostname clt
hostnamectl set-hostname master
bash
生效一下未使用文档里的改文件的的方法
-
关闭防火墙。同理记忆。从windows的mysqld推测,服务的结尾都加了
d
systemctl stop firewalld
对于开机重启,比赛 不需要
systemctl disable firewalld
-
映射
1
2
3192.168.100.200 master
192.168.100.201 slave1
192.168.100.202 slave2他是每台写,我使用的分发。此时没配ssh ,要输密码等
1
scp -r /etc/hosts slave1:/etc/
最后
ping
一下 -
时间同步
1
2
3date 查看时间
tzselect 选择时间,记忆梯子选择
由于时间一样,暂时不管注:
tzselect
并不会改成功,需要执行它显示的TZ='Asia/Shanghai'; export TZ
命令。使用后成功把EDT
改成了CST
,但还是感觉有问题,因为我用了timedatectl status
。Linux —— 时间(tzselect、timedatactl命令,查看和修改时区,修改时区为东八区)1
2
3
4
5
6
7
8
9每台下载ntp
yum install -y ntp
再master修改/etc/ntp.conf
server 127.127.1.0
fudge 127.127.1.0 stratum 10
重启服务
systemctl restart ntpd.service
测试 我是在修改文件少的机子上用date -s 00:00,然后过了几分钟用(对当然也可以等)ntpdate master同步
当然最好同步一下 -
配ssh
1
2
3ssh-keygen -t rsa
ssh-copy-id 地址
他没有用手册里的dsa -
由于要好几次修改/etc/profile,所以预先修改了。java
1
2
3
4
5
6
7
8
9export JAVA_HOME=/usr/local/jdk1.8.0_251
export HADOOP_HOME=/usr/local/hadoop-2.9.2
export HIVE_HOME=/usr/local/apache-hive-2.3.7-bin
export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.13
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$ZOOKEEPER_HOME/bin
所以上传相应文件并解压
记得source生效
我还分发里一下/etc/profile和java,和生效。
记不住分发的命令可以用xftp -
zookeeper
1
2拷贝zookeeper-3.4.13/conf/zoo_sample.cfg
cp zoo_sample.cfg zoo.cfg1
2
3
4
5创建文件夹
/usr/local/zookeeper-3.4.13/data
创建myid
vim /usr/local/zookeeper-3.4.13/data/myid
写1 修改231
2
3
4
5
6
7配置zoo.cfg
修改dataDir=/usr/local/zookeeper-3.4.13/data
他未添加dataLogDir
添加,不知能否从0开始
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:38881
2
3分发/usr/local/zookeeper-3.4.13/
scp -r /usr/local/zookeeper-3.4.13/ 主机名:/usr/local/
修改每台myid1
2
3
4
5配置环境变量,此处可以在上面提前写
export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.13
path后面加上:$ZOOKEEPER_HOME/bin
分发记得生效
他说每分发一个都要生效一下1
2
3
4启动zkServer.sh start
状态zkServer.sh status
注意要都启动再看状态,否则会看到Connection refused (Connection refused) 误以为配错了
启动顺序 master slave1 slave2 ,slave1会是leader -
hadoop
1
2解压配环境变量已经在上面做了
他说lib没有必要,从来也没用1
2配置/usr/local/hadoop-2.9.2/etc/hadoop/hadoop-env.sh
修改export JAVA_HOME=/usr/local/jdk1.8.0_2511
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23配置core-site.xml
添加
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop-2.9.2/hdfs/tmp</value>
<--!他们直接在tmp下,没有hdfs-->
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>fs.checkpoint.period</name>
<value>60</value>
</property>
<property>
<name>fs.checkpoint.size</name>
<value>67108864</value>
</property>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28配置hdfs-site.xml
添加
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop-2.9.2/hdfs/name</value>
<final>true</final>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop-2.9.2/hdfs/data</value>
<final>true</final>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>1
2
3
4
5编写slaves
slave1
slave2
编写master,他不建议这样写
master
1
2
3他配了yarn-env.sh
改了export JAVA_HOME=/usr/local/jdk1.8.0_251/
都可以1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28配置yarn-site.xml
<property>
<name>yarn.resourcemanager.address</name>
<value>master:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:18030</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:18088</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:18141</value>
</property>
<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>1
2
3
4
5配置mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>1
2
3分发,我觉得可以都解压了,然后就只须分发hadoop目录了
scp -r
与此同时可以去搭hive1
2
3
4
5
6启动
master格式化 hadoop namenode -format
start-all.sh
查看
master:50070
master:18088 -
hive
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18slave2安装mysql server
他先下了wget,用wget下载源安装包
我觉得这样也可以yum -y install http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql-community-server
systemctl start mysqld
systemctl enable mysqld
grep "password" /var/log/mysqld.log
进入maysql
set global validate_password_policy=0;
set global validate_password_length=6;
alter user 'root'@'localhost' identified by '123456';
可以退出重进一下
# 下面两个用其中一个,我第二个一直让我输入
# update user set host='%' where user='root';
# grant all privileges on *. * to 'root'@'% with grant option;
flush privileges;
上传connection包到slave1:/usr/local/apache-hive-2.3.7-bin/lib,比赛时应该会在某个地方,文档说/lib下1
master作为client,slave1作为 hive server
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36在slave1下conf
cp hive-env.sh.template hive-env.sh
vim hive-env.sh
修改HADOOP_HOME=/usr/local/hadoop-2.9.2
创建vim hive-site.xml
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://slave2:3306/hive?createDatabaseIfNotExist=true&useSSL=false&characterEncoding=UTF-8</value>
<!--文档里没使用,但官方视频使用了&useSSL=false又加上&characterEncoding=UTF-8-->
</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>123456</value>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<property>
<name>datanucleus.schema.autoCreateAll</name>
<value>true</value>
</property>
</configuration>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19在master下
cp /usr/local/apache-hive-2.3.7-bin/lib/jline-2.12.jar /usr/local/hadoop-2.9.2/share/hadoop/yarn/lib/
修改hive-env.sh,我情愿slave发过来
HADOOP_HOME=/usr/local/hadoop-2.9.2
修改hive-site.xml
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>
<property>
<name>hive.metastore.local</name>
<value>false</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://slave1:9083</value>
</property>
</configuration>1
2
3
4
5
6
7
8
9
10启动
slave1下
hive --service metastore
master下
hive
测试show databases;
# 报Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
有可能<name>hive.metastore.uris</name>值写错了
# 报 Could not create ServerSocket on address 0.0.0.0/0.0.0.0:9083.
可尝试把runjar杀掉
day 15 爬
string(div/div[3]/a/em)
可以获取下面的所以文字。time.time()
时间戳- 字典形的str,可用
json.loads(str)
转成字典