大数据技术——核心知识点复习提纲
一、Linux 基础命令
| 命令 | 功能 | 常用选项 |
|---|---|---|
cd |
切换目录 | . 当前目录,.. 上级目录 |
ls |
列出文件 | -a 显示隐藏,-l 详细信息,-R 递归 |
cat |
查看文件 | -n 显示行号 |
mkdir |
创建目录 | -p 创建父目录 |
rm |
删除文件/目录 | -f 强制,-r 递归 |
cp |
复制 | -f 覆盖,-R 递归 |
mv |
移动/重命名 | -f 覆盖,-i 询问 |
pwd |
显示当前路径 | – |
chmod |
修改权限 | 数字法(r=4,w=2,x=1)如 700 |
sudo |
以超级用户执行 | – |
source |
使配置生效 | – |
hostnamectl |
修改主机名 | set-hostname |
ifconfig |
查看IP地址 | – |
二、JDK 安装与环境变量
步骤
-
上传
jdk-8u161-linux-x64.tar.gz到/opt -
解压:
sudo tar -zxvf jdk-8u161-linux-x64.tar.gz -
编辑
/etc/profile,添加:bash
export JAVA_HOME=/opt/jdk1.8.0_161 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH -
source /etc/profile使其生效 -
验证:
java -version
三、SSH 免密登录配置
操作流程
-
生成密钥对:
ssh-keygen -t rsa(一路回车) -
将公钥追加到授权文件:
bash
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
-
设置权限:
bash
chmod 755 ~ chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
-
分发公钥到其他节点:
bash
ssh-copy-id -i ~/.ssh/id_rsa.pub slave1
-
验证:
ssh master无需密码即成功
四、Hadoop 部署
4.1 伪分布式部署(单节点)
配置文件修改(位于 $HADOOP_HOME/etc/hadoop/)
| 文件 | 关键配置 |
|---|---|
hadoop-env.sh |
export JAVA_HOME=/opt/jdk1.8.0_161 |
core-site.xml |
fs.defaultFS → hdfs://master:9000hadoop.tmp.dir → 临时目录 |
hdfs-site.xml |
dfs.replication → 1dfs.namenode.name.dir 和 dfs.datanode.data.dir |
yarn-site.xml |
yarn.resourcemanager.hostname → masteryarn.nodemanager.aux-services → mapreduce_shuffle |
mapred-site.xml |
mapreduce.framework.name → yarn |
启动与验证
-
格式化:
hdfs namenode -format -
启动:
start-all.sh或start-dfs.sh+start-yarn.sh -
进程检查:
jps应看到 NameNode, DataNode, SecondaryNameNode, ResourceManager, NodeManager -
Web 界面:HDFS →
http://master:50070,YARN →http://master:8088
4.2 完全分布式集群部署
节点规划
| 节点 | HDFS 角色 | YARN 角色 |
|---|---|---|
| master | NameNode | ResourceManager |
| slave1, slave2 | DataNode | NodeManager |
关键配置修改
-
etc/hosts:添加所有节点的 IP 与主机名映射 -
masters文件:写入master -
workers文件:写入slave1、slave2(删除 localhost) -
hdfs-site.xml:dfs.replication设为 2 -
删除临时目录(
datanode_1_dir中的内容)
克隆虚拟机后修改 slave 节点
-
修改 IP 地址(
/etc/netplan/*.yaml) -
修改主机名:
sudo hostnamectl set-hostname slave1 -
修改
hdfs-site.xml:注释掉 NameNode 相关配置,保留 DataNode 配置
启动集群
-
在 master 上格式化:
hdfs namenode -format -
启动:
start-all.sh -
分别在各节点用
jps验证进程
五、Hive 安装与配置
5.1 MySQL 作为元数据库(MySQL 8.0.14)
-
安装依赖:
sudo apt-get install libaio1 -
按顺序安装 deb 包(
mysql-common,libmysqlclient21, ... ,mysql-community-server) -
注意:若安装时未设置 root 密码,后续需用
sudo mysql进入并执行:sql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'; FLUSH PRIVILEGES;
-
创建用户并授权:
sql
CREATE USER 'zeng'@'%' IDENTIFIED BY '123456'; GRANT ALL ON *.* TO 'zeng'@'%'; CREATE DATABASE bigdata; -- 存储 Hive 元数据
5.2 Hive 3.1.1 部署
配置文件
-
hive-site.xml:配置 MySQL 连接(URL、驱动、用户名、密码) -
hive-env.sh:设置export HADOOP_HOME=/opt/hadoop-3.1.1 -
/etc/profile添加HIVE_HOME及PATH -
hive-config.sh设置JAVA_HOME,HADOOP_HOME,HIVE_HOME
初始化与启动
-
复制 MySQL 驱动:
mysql-connector-java-8.0.14.jar到 Hive 的lib目录 -
初始化元数据库:
schematool -initSchema -dbType mysql -
启动 Hive:
hive(需 Hadoop 已启动)
六、Hive 数据库与表操作
6.1 数据库 DDL
sql
CREATE DATABASE classtest; CREATE DATABASE IF NOT EXISTS classtest; SHOW DATABASES; DESCRIBE DATABASE classtest; -- 查看库存储位置 DROP DATABASE IF EXISTS classtest;
6.2 表操作(三种建表方式)
① 直接建表
sql
CREATE TABLE student ( id string COMMENT 'student id', name string COMMENT 'student name', age int COMMENT 'student age' ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' STORED AS TEXTFILE LOCATION '/user/hive/warehouse/classtest.db/student';
② AS 查询建表(复制结构和部分数据)
sql
CREATE TABLE student2 AS SELECT id, name FROM student WHERE id > 150;
③ LIKE 建表(仅复制结构,无数据)
sql
CREATE TABLE student3 LIKE student;
其他常用命令
-
SHOW TABLES; -
DESC student;-- 查看表结构 -
ALTER TABLE 旧名 RENAME TO 新名;
七、Hive 分区表(重点)
7.1 单字段静态分区
sql
CREATE TABLE cityperson ( id string, name string, age int ) PARTITIONED BY (city string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
-
加载数据:
sql
LOAD DATA LOCAL INPATH '/home/user1/citydataForxiamen.txt' INTO TABLE cityperson PARTITION(city='xiamen');
-
查看分区:
SHOW PARTITIONS cityperson; -
HDFS 存储结构:
/user/hive/warehouse/库名.db/表名/city=值/
7.2 多字段静态分区
sql
CREATE TABLE agentinformation ( agentID string, agentName string, agentAddress string ) PARTITIONED BY (province string, city string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ';
-
加载数据示例:
sql
LOAD DATA LOCAL INPATH '...' INTO TABLE agentinformation PARTITION(province='shanxi', city='xian');
-
覆盖数据:添加
OVERWRITE关键字sql
LOAD DATA LOCAL INPATH '...' OVERWRITE INTO TABLE agentinformation PARTITION(province='fujian', city='xiamen');
八、Sqoop 数据迁移
8.1 Sqoop 安装与配置
-
解压
sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz到/opt -
配置
sqoop-env.sh:设置HADOOP_COMMON_HOME,HADOOP_MAPRED_HOME,HIVE_HOME -
配置
/etc/profile:export SQOOP_HOME并修改PATH -
复制 MySQL 驱动到 Sqoop 的
lib目录 -
验证:
./bin/sqoop version
8.2 数据导入操作
① MySQL → HDFS
bash
./bin/sqoop import \ --connect jdbc:mysql://master:3306/teacherinfo?serverTimezone=UTC \ --username zeng --password 123456 \ --table teacher \ --delete-target-dir -m 3
-
默认导入到
/user/user1/teacher(HDFS)
② MySQL → Hive
bash
./bin/sqoop import \ --connect jdbc:mysql://master:3306/teacherinfo?serverTimezone=UTC \ --username zeng --password 123456 \ --table teacher \ --delete-target-dir \ --hive-import --hive-table teacher -m 3
-
前提:将
hive-common-3.1.1.jar复制到 Sqoop 的lib目录,避免ClassNotFoundException -
Hive 中会自动创建表(字段顺序可能与 MySQL 不同,需注意)
③ 带条件导入(--where)
bash
./bin/sqoop import --connect jdbc:mysql://master:3306/erp?serverTimezone=UTC \ --username zeng --password 123456 \ --table emp --columns ename,eaddress,esalary \ --where "esalary > 4000" \ --delete-target-dir --hive-import --hive-table esalary -m 3
8.3 常用参数
| 参数 | 作用 |
|---|---|
--connect |
JDBC URL |
--table |
源表名 |
--columns |
指定列 |
--where |
过滤条件 |
-m |
Map 任务数(并行度) |
--delete-target-dir |
删除目标目录(避免冲突) |
--hive-import |
导入到 Hive |
--hive-table |
Hive 表名 |
九、常见问题与解决
| 问题 | 原因 | 解决方法 |
|---|---|---|
ClassNotFoundException: HiveConf |
Sqoop 缺少 Hive jar | 复制 hive-common-*.jar 到 Sqoop 的 lib |
| MySQL 安装后无法登录 | 未设置 root 密码或加密方式不兼容 | sudo mysql 进入,用 ALTER USER ... mysql_native_password 重置密码 |
| Hadoop 启动无 SecondaryNameNode | /etc/hosts 配置错误 |
检查主机名映射,确保 localhost 和实际主机名正确 |
| NameNode 处于 safe mode | 刚启动或异常 | hdfs dfsadmin -safemode leave 退出 |
运行 MR 程序报 MRAppMaster 错误 |
缺少环境变量 | 在 mapred-site.xml 中添加 yarn.app.mapreduce.am.env 等配置 |
| 权限被拒绝 | 目录权限不对 | 使用 chmod 调整为 700 或 755 |
十、复习建议
-
动手实操:按照文档顺序,从 Linux 基础 → JDK → SSH → Hadoop(伪分布 → 集群)→ Hive → Sqoop,边做边记。
-
重点掌握:
-
Hadoop 核心配置文件的含义(core-site, hdfs-site, yarn-site, mapred-site)
-
Hive 分区表的设计与数据加载(
PARTITIONED BY+LOAD DATA) -
Sqoop 导入命令的参数组合
-
-
排错能力:熟悉常见报错信息(如
ClassNotFoundException,SafeModeException)及其解决步骤。 -
Web 监控:熟悉 50070(HDFS)和 8088(YARN)端口的界面,用于查看节点状态和作业运行情况。
更多推荐
所有评论(0)