阿里云ECS服务器上安装大数据环境步骤教程

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 之前疫情在家,参加了阿里云的在家云实践,白嫖了半年的云服务器,感觉体验还不错。最近推出有阿里云活动,1vCPU,2G内存的主机一年只要94,忍不住又冲了一波,用来装个完整的大数据环境。大致顺序如下:

之前疫情在家,参加了阿里云的在家云实践,白嫖了半年的云服务器,感觉体验还不错。最近推出有阿里云活动,1vCPU,2G内存的主机一年只要94,忍不住又冲了一波,用来装个完整的大数据环境。大致顺序如下:


  1. 安装Java
  2. 安装Hadoop 3.1.3
  3. 安装Anaconda3
  4. 安装Scala 2.11.12
  5. 安装Spark 2.4.0
  6. 安装sbt 0.13.11
  7. 安装Kafka 0.10.2.0

主要参考林子雨老师的博客,剩下的HBase,Hive啥的,以后有时间再慢慢配置。这里记录一下安装过程中出现的问题。


1、查看Hadoop版本报错


Java环境变量已经配置完成后,安装Hadoop 3.1.3,查看版本时报错。


./bin/hadoop version ERROR: JAVA_HOME is not set and could not be found.

检查环境变量:


java -version java version "1.8.0_162" Java(TM) SE Runtime Environment (build 1.8.0_162-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode) echo $JAVA_HOME /usr/lib/jvm/jdk1.8.0_162

都是正常的,但是Hadoop还是无法找到Java。查了一下还需要在../hadoop/etc/hadoop/hadoop-env.sh中声明Java的路径。


cd /usr/local/hadoop/etc/ vim hadoop-env.sh

在里面加上export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162,再次运行查看版本的命令就成功了。


./bin/hadoop version Hadoop 3.1.3 Source code repository https://gitbox.apache.org/repos/asf/hadoop.git -r ba631c436b806728f8ec2f54ab1e289526c90579 Compiled by ztang on 2019-09-12T02:47Z Compiled with protoc 2.5.0 From source with checksum ec785077c385118ac91aadde5ec9799 This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-3.1.3.jar

2、启动Scala shell报错


安装完Scala,一启动就报错,淦!!!!!!!!!


./bin/scala Welcome to Scala 2.11.12 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_162). Type in expressions for evaluation. Or try :help. [ERROR] Failed to construct terminal; falling back to unsupported java.lang.NumberFormatException: For input string: "0x100" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at java.lang.Integer.valueOf(Integer.java:766) at jline.internal.InfoCmp.parseInfoCmp(InfoCmp.java:59) at jline.UnixTerminal.parseInfoCmp(UnixTerminal.java:242) at jline.UnixTerminal.<init>(UnixTerminal.java:65) at jline.UnixTerminal.<init>(UnixTerminal.java:50) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at java.lang.Class.newInstance(Class.java:442) at jline.TerminalFactory.getFlavor(TerminalFactory.java:211) at jline.TerminalFactory.create(TerminalFactory.java:102) at jline.TerminalFactory.get(TerminalFactory.java:186) at jline.TerminalFactory.get(TerminalFactory.java:192) at jline.console.ConsoleReader.<init>(ConsoleReader.java:243) at jline.console.ConsoleReader.<init>(ConsoleReader.java:235) at jline.console.ConsoleReader.<init>(ConsoleReader.java:223) at scala.tools.nsc.interpreter.jline.JLineConsoleReader.<init>(JLineReader.scala:64) at scala.tools.nsc.interpreter.jline.InteractiveReader.<init>(JLineReader.scala:33) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at scala.tools.nsc.interpreter.ILoop$$anonfun$scala$tools$nsc$interpreter$ILoop$$instantiater$1$1.apply(ILoop.scala:858) at scala.tools.nsc.interpreter.ILoop$$anonfun$scala$tools$nsc$interpreter$ILoop$$instantiater$1$1.apply(ILoop.scala:855) at scala.tools.nsc.interpreter.ILoop.scala$tools$nsc$interpreter$ILoop$$mkReader$1(ILoop.scala:862) at scala.tools.nsc.interpreter.ILoop$$anonfun$22$$anonfun$apply$10.apply(ILoop.scala:873) at scala.tools.nsc.interpreter.ILoop$$anonfun$22$$anonfun$apply$10.apply(ILoop.scala:873) at scala.util.Try$.apply(Try.scala:192) at scala.tools.nsc.interpreter.ILoop$$anonfun$22.apply(ILoop.scala:873) at scala.tools.nsc.interpreter.ILoop$$anonfun$22.apply(ILoop.scala:873) at scala.collection.immutable.Stream.map(Stream.scala:418) at scala.tools.nsc.interpreter.ILoop.chooseReader(ILoop.scala:873) at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1$$anonfun$newReader$1$1.apply(ILoop.scala:893) at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.newReader$1(ILoop.scala:893) at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.scala$tools$nsc$interpreter$ILoop$$anonfun$$preLoop$1(ILoop.scala:897) at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1$$anonfun$startup$1$1.apply(ILoop.scala:964) at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply$mcZ$sp(ILoop.scala:990) at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:891) at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:891) at scala.reflect.internal.util.ScalaClassLoader$.savingContextLoader(ScalaClassLoader.scala:97) at scala.tools.nsc.interpreter.ILoop.process(ILoop.scala:891) at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:74) at scala.tools.nsc.MainGenericRunner.run$1(MainGenericRunner.scala:87) at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:98) at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:103) at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala) scala>

但是好像不影响使用。修改.profile可以解决这个问题。


cd vim .profile # 添加export TERM=xterm-color source .profile

这样就解决了。但是不知道是为什么解决的,看了几个博客,都是这样那样再这样,就OK了。前几天刚安装了一遍Scala 2.11.12,那时候还好好的,这会儿就出问题了。


3、配置PYSPARK


pyspark的交互式环境本身不需要配置,执行以下命令就可以打开pyspark:


cd /usr/local/spark ./bin/pyspark

使用的Python版本是系统的默认Python版本,也就是你在终端中输入python打开的那一个(之前已经安装好了Anaconda3,此时用的就是Anaconda3自带的Python版本)。但是你在这个Python中却无法导入pyspark相关的包。


>>> from pyspark.sql import Row Traceback (most recent call last): File "<stdin>", line 1, in <module> ModuleNotFoundError: No module named 'pyspark'

需要配置环境变量,在~/.bashrc中添加以下的几行:


export HADOOP_HOME=/usr/local/hadoop export SPARK_HOME=/usr/local/spark export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.7-src.zip:$PYTHONPATH export PYSPARK_PYTHON=python export PATH=$HADOOP_HOME/bin:$SPARK_HOME/bin:$PATH

记得source一下让环境变量生效。这时候再去导入相关的包就不会报错了。上面那些其实也顺便配置了HadoopSpark的环境变量,理论上来说,如果你就只想用默认的Python版本跑pyspark,那只要加上PYTHONPATH的那一行就行了。


4、SBT换源


一开始用的是华为的源,而且似乎源也没给全,会报包下载失败的错误。想了一下我是在阿里云的服务器上,用阿里云的源大概快点?并没有


vim ~/.sbt/repositories

[repositories] aliyun-maven-repo: https://maven.aliyun.com/repository/public aliyun-nexus: https://maven.aliyun.com/nexus/content/groups/public/ typesafe: https://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/artifact.[ext], bootOnly maven-central sonatype-oss-releases sonatype-oss-snapshots ivy-sbt-plugin: https://dl.bintray.com/sbt/sbt-plugin-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/artifact.[ext]


换了sbt的版本,改用sbt1.3.8,参考sbt无痛入门指南换源,速度快了很多。


5、Maven换源


参考将Maven源改为国内阿里云仓库


6、阿里云服务器安装HBase


这个有点坑,一开始完全想不到问题出在这里。打开HBase Shell,运行所有命令都会报错。


ERROR: KeeperErrorCode = NoNode for /hbase/master

说是找不到master,启动HBase之后执行jps是有HMaster的。最后检查了很久,发现HDFS中没有hbase文件夹,这时候才想起来配置hbase-site.xml的时候有个地方疏忽了。


<configuration> <property> <name>hbase.rootdir</name> <value>hdfs://xxx.xxx.xxx.xxx:9000/hbase</value> 此处要填写你的阿里云内网IP </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.unsafe.stream.capability.enforce</name> <value>false</value> </property> </configuration>

云服务器ECS地址:阿里云·云小站


相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
目录
相关文章
|
10天前
|
存储 人工智能 数据管理
|
3天前
|
存储 人工智能 数据管理
媒体声音|专访阿里云数据库周文超博士:AI就绪的智能数据平台设计思路
在生成式AI的浪潮中,数据的重要性日益凸显。大模型在实际业务场景的落地过程中,必须有海量数据的支撑:经过训练、推理和分析等一系列复杂的数据处理过程,才能最终产生业务价值。事实上,大模型本身就是数据处理后的产物,以数据驱动的决策与创新需要通过更智能的平台解决数据多模处理、实时分析等问题,这正是以阿里云为代表的企业推动 “Data+AI”融合战略的核心动因。
|
9天前
|
机器学习/深度学习 分布式计算 数据挖掘
MaxFrame 性能评测:阿里云MaxCompute上的分布式Pandas引擎
MaxFrame是一款兼容Pandas API的分布式数据分析工具,基于MaxCompute平台,极大提升了大规模数据处理效率。其核心优势在于结合了Pandas的易用性和MaxCompute的分布式计算能力,无需学习新编程模型即可处理海量数据。性能测试显示,在涉及`groupby`和`merge`等复杂操作时,MaxFrame相比本地Pandas有显著性能提升,最高可达9倍。适用于大规模数据分析、数据清洗、预处理及机器学习特征工程等场景。尽管存在网络延迟和资源消耗等问题,MaxFrame仍是处理TB级甚至PB级数据的理想选择。
35 4
|
17天前
|
SQL DataWorks 数据可视化
阿里云DataWorks评测:大数据开发治理平台的卓越表现
阿里云DataWorks是一款集数据集成、开发、分析与管理于一体的大数据平台,支持多种数据源无缝整合,提供可视化ETL工具和灵活的任务调度机制。其内置的安全体系和丰富的插件生态,确保了数据处理的高效性和安全性。通过实际测试,DataWorks展现了强大的计算能力和稳定性,适用于中小企业快速搭建稳定高效的BI系统。未来,DataWorks将继续优化功能,降低使用门槛,并推出更多灵活的定价方案,助力企业实现数据价值最大化。
|
17天前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
53 2
|
1月前
|
机器学习/深度学习 JavaScript Cloud Native
Node.js作为一种快速、可扩展的服务器端运行时环境
Node.js作为一种快速、可扩展的服务器端运行时环境
47 8
|
2月前
|
存储 分布式计算 大数据
【赵渝强老师】阿里云大数据生态圈体系
阿里云大数据计算服务MaxCompute(原ODPS)提供大规模数据存储与计算,支持离线批处理。针对实时计算需求,阿里云推出Flink版。此外,阿里云还提供数据存储服务如OSS、Table Store、RDS和DRDS,以及数据分析平台DataWorks、Quick BI和机器学习平台PAI,构建全面的大数据生态系统。
84 18
|
12天前
|
SQL 存储 分布式计算
阿里云 Paimon + MaxCompute 极速体验
Paimon 和 MaxCompute 的对接经历了长期优化,解决了以往性能不足的问题。通过半年紧密合作,双方团队专门提升了 Paimon 在 MaxCompute 上的读写性能。主要改进包括:采用 Arrow 接口减少数据转换开销,内置 Paimon SDK 提升启动速度,实现原生读写能力,减少中间拷贝与转换,显著降低 CPU 开销与延迟。经过双十一实战验证,Paimon 表的读写速度已接近 MaxCompute 内表,远超传统外表。欢迎体验!
|
2月前
|
缓存 Ubuntu Linux
Linux环境下测试服务器的DDR5内存性能
通过使用 `memtester`和 `sysbench`等工具,可以有效地测试Linux环境下服务器的DDR5内存性能。这些工具不仅可以评估内存的读写速度,还可以检测内存中的潜在问题,帮助确保系统的稳定性和性能。通过合理配置和使用这些工具,系统管理员可以深入了解服务器内存的性能状况,为系统优化提供数据支持。
46 4
|
2月前
|
NoSQL Linux PHP
如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤
本文介绍了如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤。接着,对比了两种常用的 PHP Redis 客户端扩展:PhpRedis 和 Predis,详细说明了它们的安装方法及优缺点。最后,提供了使用 PhpRedis 和 Predis 在 PHP 中连接 Redis 服务器及进行字符串、列表、集合和哈希等数据类型的基本操作示例。
74 4