内容推荐 目前靠前大数据市场继续保持高速的发展态势,作者在与地方政府、证券金融公司的项目合作中发现,他们对大数据技术很感兴趣,并希望从大数据技术、采集、存储、访问、安全、分析与开发等方面得到指导和帮助。因此编写了这本大数据技术的入门书。 本书共12章,以Hadoop和Spark框架为线索,比较全面地介绍了Hadoop技术、Spark技术、大数据存储、大数据访问、大数据采集、大数据管理、大数据分析、大数据开发、大数据环境自动化部署(Docker和K8s)等内容。 本书适合大数据技术初学者,政府、金融机构的大数据应用决策和技术人员、IT经理、CTO、CIO等快速学习大数据技术。本书也可以作为高等院校和培训学校相关专业的培训教材。 作者简介 杨正洪,毕业于美国State University of New York at Stony Brook,在美国硅谷从事AI和大数据相关研发工作 10 多年,华中科技大学和中国地质大学客座教授,湖北省 2013 年海外引进人才,拥有多项国家。参与了大数据和人工智能的国家标准的制定,在 2016 年参与了公安部的“信息安全技术:大数据平台安全管理产品安全技术要求”的国家标准制定。作者还是中关村海外智库专家顾问和住建部中规院专家顾问,担任了在美上市公司 CTO、北京某国企 CIO 和上海某国企不错副总裁等职。多年从事人工智能与大数据技术的工作,出版了《智慧城市》等多本书籍。 目录 目 录 章 大数据时代\t1 1.1 什么是大数据\t1 1.1.1 四大特征\t2 1.1.2 数据监管(Data Governance)\t3 1.1.3 数据质量\t4 1.1.4 大数据分析\t4 1.1.5 大数据平台架构\t5 1.2 大数据与云计算的关系\t6 1.2.1 云计算产品概述\t6 1.2.2 虚拟服务器\t7 1.2.3 云存储\t11 1.3 Hadoop和云平台的应用实例\t12 1.3.1 云平台层面配置\t12 1.3.2 大数据平台层面配置\t14 1.4 数据湖(Data Lake)\t16 1.5 企业如何走向大数据\t17 1.5.1 业务价值维度\t18 1.5.2 数据维度\t18 1.5.3 现有IT环境和成本维度\t19 1.5.4 数据治理维度\t20 第2章 大数据软件框架\t21 2.1 Hadoop框架\t21 2.1.1 HDFS(分布式文件系统)\t22 2.1.2 MapReduce(分布式计算框架)\t23 2.1.3 YARN(集群资源管理器)\t28 2.2 Spark(内存计算框架)\t30 2.2.1 Spark SQL\t31 2.2.2 Spark Streaming\t32 2.3 实时流处理框架\t34 2.4 云端消息队列\t34 2.5 框架的选择\t35 2.6 Hadoop发行版\t36 2.7 Mac上安装Hadoop\t37 2.7.1 在Mac上安装Hadoop\t37 2.7.2 安装MySQL和Hive\t41 2.8 Linux上安装Hadoop\t44 2.8.1 配置Java环境\t45 2.8.2 安装ntp和Python\t47 2.8.3 安装和配置openssl\t47 2.8.4 配置SSH无密码访问\t47 2.8.5 安装Ambari和HDP\t48 2.8.6 启动和停止服务\t52 2.9 AWS云平台上安装Hadoop\t54 第3章 大数据集群\t57 3.1 集群实例分析\t57 3.2 YARN\t67 3.2.1 架构组成\t68 3.2.2 YARN执行流程\t71 3.3 资源的调度器\t75 3.3.1 Capacity Scheduler\t76 3.3.2 Fair Scheduler\t78 3.3.3 资源调度实例分析\t81 3.3.4 内存和CPU资源调度\t84 3.4 深入研究Resource Manager\t88 3.5 集群配置文件总览\t91 3.5.1 yarn-site.xml\t91 3.5.2 mapred-site.xml\t94 3.6 自动伸缩(Auto Scaling)集群\t97 3.7 迁移Hadoop集群\t97 3.8 增加Instance\t99 第4章 大数据存储:文件系统和云存储\t100 4.1 HDFS shell命令\t100 4.2 配置HDFS\t102 4.2.1 配置文件\t102 4.2.2 多节点配置\t103 4.3 HDFS API编程\t104 4.3.1 读取HDFS文件内容\t105 4.3.2 写HDFS文件内容\t108 4.3.3 WebHDFS\t108 4.4 HDFS API总结\t110 4.4.1 Configuration类\t110 4.4.2 FileSystem抽象类\t111 4.4.3 Path类\t111 4.4.4 FSDataInputStream类\t111 4.4.5 FSDataOutputStream类\t112 4.4.6 IOUtils类\t112 4.4.7 FileStatus类\t112 4.4.8 FsShell类\t112 4.4.9 ChecksumFileSystem抽象类\t112 4.4.10 其他的HDFS API实例\t113 4.4.11 综合实例\t115 4.5 HDFS文件格式\t118 4.5.1 SequenceFile\t118 4.5.2 TextFile(文本格式)\t118 4.5.3 RCFile\t118 4.5.4 Avro\t120 4.6 云存储S3\t120 4.6.1 S3基本概念\t121 4.6.2 S3管理控制台\t122 4.6.3 S3 CLI\t126 4.6.4 S3 SDK\t127 4.6.5 分区\t129 4.6.6 与EBS的比较\t129 4.6.7 与Glacier的比较\t129 第5章 大数据存储:数据库\t130 5.1 NoSQL\t130 5.2 HBase概述\t131 5.2.1 HBase表结构\t132 5.2.2 HBase系统架构\t135 5.2.3 启动并操作HBase数据库\t136 5.2.4 HBase Shell工具\t139 5.3 HBase编程\t142 5.3.1 增删改查API\t142 5.3.2 过滤器\t146 5.3.3 计数器\t149 5.3.4 原子操作\t149 5.3.5 管理API\t149 5.4 其他NoSQL数据库\t151 5.4.1 Cassandra\t151 5.4.2 Impala\t151 5.4.3 DynamoDB\t151 5.4.4 Redshift\t151 5.5 云数据库\t152 5.5.1 什么是RDS\t152 5.5.2 创建云数据库\t152 5.5.3 查看云数据库信息\t156 5.5.4 何时使用云端数据库\t159 第6章 大数据访问:SQL引擎层\t160 6.1 Phoenix\t161 6.1.1 安装和配置Phoenix\t161 6.1.2 在Eclipse上开发Phoenix程序\t165 6.1.3 Phoenix SQL工具\t169 6.1.4 Phoenix SQL语法\t170 6.2 Hive\t171 6.2.1 Hive架构\t172 6.2.2 安装Hive\t173 6.2.3 Hive CLI\t175 6.2.4 Hive数据类型\t175 6.2.5 Hive文件格式\t177 6.2.6 Hive表定义\t179 6.2.7 Hive加载数据\t183 6.2.8 Hive查询数据\t184 6.2.9 Hive UDF\t186 6.2.10 Hive视图\t188 6.2.11 HiveServer2\t189 6.2.12 hive-site.xml需要的配置\t195 6.2.13 HBase集成\t200 6.2.14 XML和JSON数据\t200 6.2.15 使用TEZ\t201 6.2.16 Hive MetaStore\t203 6.2.17 综合示例\t204 6.3 Pig\t206 6.3.1 Pig语法\t207 6.3.2 Pig和Hive的使用场景之比较\t210 6.4 ElasticSearch(全文搜索引擎)\t211 6.4.1 全文索引的基础知识\t211 6.4.2 安装和配置ElasticSearch\t213 6.4.3 ElasticSearch API\t215 6.5 Presto\t217 第7章 大数据采集和导入\t218 7.1 Flume\t220 7.1.1 Flume架构\t220 7.1.2 Flume事件\t221 7.1.3 Flume源\t221 7.1.4 Flume拦截器(Interceptor)\t222 7.1.5 Flume通道选择器(Channel Selector)\t223 7.1.6 Flume通道\t224 7.1.7 Flume接收器\t225 7.1.8 负载均衡和单点失败\t226 7.1.9 Flume监控管理\t227 7.1.10 Flume实例\t227 7.2 Kafka\t229 7.2.1 Kafka架构\t229 7.2.2 Kafka与JMS的异同\t230 7.2.3 Kafka性能考虑\t231 7.2.4 消息传送机制\t231 7.2.5 Kafka和Flume的比较\t232 7.3 Sqoop\t232 7.3.1 从数据库导入HDFS\t233 7.3.2 增量导入\t235 7.3.3 将数据从Oracle导入Hive\t235 7.3.4 将数据从Oracle导入HBase\t235 7.3.5 导入所有表\t236 7.3.6 从HDFS导出数据\t236 7.3.7 数据验证\t237 7.3.8 其他Sqoop功能\t237 7.4 Storm\t238 7.4.1 Storm基本概念\t238 7.4.2 Spout\t240 7.4.3 Bolt\t241 7.4.4 拓扑结构\t243 7.4.5 Storm总结\t244 7.5 Amazon Kinesis\t245 7.6 其他工具\t246 7.6.1 Embulk\t246 7.6.2 Fluentd\t247 第8章 大数据安全管控\t250 8.1 数据主权和合规性\t250 8.2 云端安全\t251 8.2.1 身份验证和访问权限\t251 8.2.2 角色\t253 8.2.3 虚拟网络\t254 8.2.4 安全组\t255 8.3 云端监控\t256 8.3.1 跟踪和审计\t256 8.3.2 监控\t257 8.3.3 基于Datadog的监控\t259 8.4 云端备份和恢复\t262 8.5 大数据安全\t262 8.5.1 Kerberos\t263 8.5.2 Apache Ranger\t263 8.5.3 应用端安全\t267 第9章 大数据快速处理平台:Spark\t268 9.1 Spark框架\t268 9.1.1 安装和配置Spark\t269 9.1.2 Scala\t270 9.2 Spark Shell\t271 9.3 Spark编程\t273 9.3.1 编写Spark API程序\t274 9.3.2 使用sbt编译并打成JAR包\t274 9.3.3 运行程序\t275 9.4 RDD\t276 9.4.1 RDD算子和RDD依赖关系\t277 9.4.2 RDD转换操作\t278 9.4.3 RDD行动(Action)操作\t279 9.4.4 RDD控制操作\t280 9.4.5 RDD实例\t280 9.5 Spark SQL\t282 9.5.1 DataFrame\t283 9.5.2 RDD转化为DataFrame\t287 9.5.3 JDBC数据源\t289 9.5.4 Hive数据源\t289 9.6 Spark Streaming\t290 9.6.1 DStream编程模型\t291 9.6.2 DStream操作\t293 9.6.3 性能考虑\t295 9.6.4 容错能力\t296 0章 大数据分析\t297 10.1 数据科学\t298 10.1.1 探索性数据分析\t299 10.1.2 描述统计\t300 10.1.3 数据可视化\t300 10.2 预测分析\t303 10.2.1 预测分析实例\t303 10.2.2 回归(Regression)分析预测法\t304 10.3 机器学习\t305 10.3.1 机器学习的定义\t306 10.3.2 机器学习分类\t307 10.3.3 机器学习算法\t308 10.3.4 机器学习框架\t310 10.4 算法\t312 10.4.1 分类算法\t313 10.4.2 预测算法\t313 10.4.3 聚类算法\t314 10.4.4 关联分析\t315 10.4.5 决策树\t317 10.4.6 异常值分析算法\t320 10.4.7 协同过滤(推荐引擎)算法\t320 10.5 大数据分析总体架构\t321 10.5.1 大数据平台和大数据分析的关系\t321 10.5.2 大数据平台的核心功能\t322 10.5.3 DMP\t323 10.5.4 CDP\t324 10.6 微服务\t324 10.6.1 启动和停止Consul\t326 10.6.2 服务注册\t327 10.6.3 查询服务\t329 10.6.4 服务状态检查\t329 1章 大数据环境自动化部署: Docker和Kubernetes\t331 11.1 什么是Docker?\t332 11.1.1 虚拟机\t332 11.1.2 Linux容器\t333 11.1.3 Docker的由来\t333 11.1.4 Docker的用途\t333 11.1.5 Docker和虚拟机的区别\t334 11.2 镜像文件\t335 11.3 Docker安装\t335 11.4 Dockerfile文件\t336 11.4.1 什么是Dockerfile\t336 11.4.2 使用Dockerfile\t338 11.4.3 发布镜像文件\t338 11.4.4 仓库(Repository)\t339 11.5 Service(服务)\t340 11.5.1 yml文件\t340 11.5.2 部署服务\t341 11.5.3 伸缩(Scale)应用\t341 11.6 Swarm\t341 11.6.1 什么是Swarm集群\t341 11.6.2 设置Swarm\t342 11.6.3 在Swarm集群上部署应用\t343 11.7 Stack\t344 11.8 Kubernetes\t346 11.8.1 集群\t347 11.8.2 Pod\t347 11.8.3 Node(节点)\t347 11.8.4 Kubernetes Master\t348 11.8.5 Replication Controller\t348 11.8.6 Service\t348 2章 大数据开发管理\t349 12.1 CI/CD(持续集成/持续发布)\t349 12.1.1 CI\t349 12.1.2 CD\t350 12.2 代码管理工具GitHub\t351 12.2.1 仓库(Repository)\t351 12.2.2 分支(Branch)\t352 12.2.3 提交(Commit)和请求合并(Pull request)\t352 12.2.4 开源代码的操作\t354 12.2.5 GitHub使用实例\t355 12.3 项目管理JIRA\t362 12.3.1 敏捷(Agile)开发和Scrum模式\t362 12.3.2 Project(项目)\t364 12.3.3 Issue(问题)\t365 12.3.4 Sprint(冲刺)\t367 12.3.5 Backlog(待办事项列表)\t368 12.3.6 Priority(事项优先级)\t368 12.3.7 状态和流程\t368 12.3.8 JIRA常用报表\t369 12.3.9 JIRA的主要功能总结\t372 12.4 项目构建工具Maven\t373 12.4.1 pom.xml\t373 12.4.2 安装Maven\t374 12.4.3 Maven仓库\t374 12.4.4 Maven Java项目结构\t375 12.4.5 命令列表\t376 12.5 大数据软件测试\t379 12.5.1 JUnit\t379 12.5.2 Allure\t380 附录1 数据量的单位级别\t382 附录2 AWS EC2创建步骤\t383 附录3 分布式监控系统Ganglia\t385 附录4 auth-ssh脚本\t386 |