阿里云国际站云服务器的功能与优势
1.使用广泛 覆盖多种领域阿里云云服务器有多个可用区域多种机型配置覆盖多种业务领域:标准型(适用于中小型Web应用和中小型数据库)。内存型(适合需要进行大量的内存管理操作、查找和计算的应用)。高IO类型(适用于低延迟、I/O密集型应用)。计算型(适用于大型游戏服务器和广告服务引擎、高性能计算和其他计算密集型应用程序)。大数据型(用于吞吐量密集型应用程序,如 hadoop 分布式计算、大规模日志处理、分布式档案系统和大型数据仓库)。异构型(适合于进行深度学习、科学计算、视频编解码和图形工作站等高性能应用)。批量型(适用于渲染、遗传分析、晶体制药和其他短期频繁使用的非常大规模的计算节点的计算密集型应用)。2.弹性扩展硬件配置、磁盘、带宽、计费模式、操作系统、ip、镜像、网络架构都能够根据用户自身的需求去升级/降低配置。3.可靠性可靠性:单实例服务可用性99.975%,数据信息可靠性99.9999999%。支持宕机迁移无感知、数据快照、自动告警管理等功能,为用户服务器的发展保驾护航。云硬盘策略:提供三副本专业存储策略,消除单点故障,保证数据的可靠性,使用户可以安全地将数据放入云中,无需担心数据丢失。稳定的网络架构: 成熟的网络虚拟化技术和网卡绑定技术,确保网络高可用性。保证运行环境的可靠性,让用户从网络可用性中解放。4.极速无论从用户操作还是云服务器性能,阿里云国际版都提供极速便捷的服务。操作便捷:用户只需几分钟即可轻松获取一个、数百个甚至数千个服务器应用实例,可以选择一键购买、配置、管理、扩展服务。高速内网质量: 阿里云与区域机房内部网络互联,底部均为千兆网络或千兆网络,保证内部网络通信质量。5.安全阿里云为保障云服务器安全提供了多种解决方案,并提供了数据安全的备份和回滚机制。多种方式远程登录云服务器:如密钥登录、密码登录、VNC 登录等。丰富的安全服务:提供DDoS保护、DNS劫持检测、入侵检测、漏洞扫描、网络木马检测、登录保护等安全服务,保护您的服务器。免费的云监控: 支持各种实时警报。回收站保护机制:规避因立即销毁带来的数据信息丢失等重大问题影响。自定义访问控制:通过安全组和网络 ACL 自定义主机和网络的访问管理策略,灵活自由地为不同实例设定不同的防火墙。没有阿里云国际站账号怎么办?如何购买阿里云国际站产品?选择一家稳定靠谱的阿里云国际站经销商。通过经销商关联您的阿里云账号,为用户的阿里云账号充值余额,简单方便,仅需一个邮箱就可以注册,多种方式充值。在这里要推荐一家阿里云国际站总经销商-www.123clouds,www.123clouds是阿里云国际站总经销商,安全可靠,值得信任!
centos配置Hbase
1. 上传hbase-1.3.6-bin.tar.gz压缩包到/opt目录2. 解压缩hbase-1.3.6.tar.gz 文件tar -zxf /opt/hbase-1.3.6-bin.tar.gz -C /usr/local解压后即可,看到/usr/local/hbase-1.3.6文件夹3. 配置hbase进入目录:cd /usr/local/hbase-1.3.6/conf3.1 修改hbase-site.xml文件,内容如:1. <configuration>
2. <property>
3. <name>hbase.rootdir</name>
4. <value>hdfs://master:8020/hbase</value>
5. </property>
6. <property>
7. <name>hbase.master</name>
8. <value>master</value>
9. </property>
10. <property>
11. <name>hbase.cluster.distributed</name>
12. <value>true</value>
13. </property>
14. <property>
15. <name>hbase.zookeeper.property.clientPort</name>
16. <value>2181</value>
17. </property>
18. <property>
19. <name>hbase.zookeeper.quorum</name>
20. <value>slave1,slave2,slave3</value>
21. </property>
22. <property>
23. <name>zookeeper.session.timeout</name>
24. <value>60000000</value>
25. </property>
26. <property>
27. <name>dfs.support.append</name>
28. <value>true</value>
29. </property>
30. </configuration>3.2 配置hbase-env.sh注释下面两句:export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -XX:PermSize=128m -XX:MaxPermSize=128m"内容如: export HBASE_CLASSPATH=/usr/local/hadoop-2.6.5/etc/hadoop export JAVA_HOME=/usr/java/jdk1.8.0_151 export HBASE_MANAGES_ZK=false3.3 配置regionservers,内容如下 slave1 slave2 slave3 3.4 拷贝到各子节点scp -r /usr/local/hbase-1.3.6/ slave1:/usr/local/scp -r /usr/local/hbase-1.3.6/ slave2:/usr/local/scp -r /usr/local/hbase-1.3.6/ slave3:/usr/local/3.5 配置环境变量export HBASE_HOME=/usr/local/hbase-1.3.6export PATH=$PATH:$HBASE_HOME/bin4. 运行 hbase首先确保启动了zookeeper和Hadoop集群进入目录cd /usr/local/hbase-1.3.6/bin/运行./start-hbase.sh5.在浏览器查看http://IP地址:16010
【墨菲安全实验室】Spark(3.1.2, 3.2.1, 3.3.0版本)shell命令注入漏洞
实验室昨天第一时间监测到的0day漏洞,目前已上线检测漏洞描述Spark 是用于大规模数据处理的统一分析引擎。由于 Hadoop 中"org.apache.hadoop.fs.FileUtill"类的“unTar”中针对 tar 文件的处理调了系统命令去解压,造成了 shell 命令注入的风险。攻击者可以通过该漏洞实现任意命令执行。影响产品:Apache spark发现时间:2022-03-24 11:12:38发现方式:墨菲安全实验室情报预警监控组件名称:org.apache.spark:spark-core影响版本:3.1.2, 3.2.1, 3.3.0缺陷类型:shell命令注入缺陷评级:高危墨菲安全实验室于3月24日监测发现spark存在shell命令注入漏洞,已第一时间报送CNVD。漏洞分析在spark 3.1.2, 3.2.1, 3.3.0版本的 core/src/main/scala/org/apache/spark/util/Utils.scala 代码中调用了FileUtil.unTar方法对tar包进行解压FileUtil.unTar方法在非windows的环境中调用了unTarUsingTar方法Spark中调用的unTarUsingTar方法为hadoop中的hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileUtil.java,其对文件名拼接之后通过tar命令进行解压,在处理过程中未对文件名进行转义。处置建议官方已发布补丁,参考链接:https://github.com/apache/spark/commit/057c051285ec32c665fb458d0670c1c16ba536b2墨菲安全已于昨天第一时间将漏洞上报CNVD,并同步上线了检测能力,目前墨菲安全开源版及企业版已支持检测,欢迎大家免费使用。开源地址:https://github.com/murphysecurity产品官网:https://www.murphysec.com/(限时开放注册)参考链接https://github.com/apache/spark/commit/057c051285ec32c665fb458d0670c1c16ba536b2https://issues.apache.org/jira/browse/SPARK-38631https://github.com/apache/hadoop/blob/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/FileUtil.java#L892https://github.com/apache/hadoop/commit/cae749b076f35f0be13a926ee8cfbb7ce4402746
Hbase 安装方法
Hbase 安装方法(基于已经安装好了hadoop的环境)1. 准备好zk-hbase-1013.tar.gz文件,然后分别上传到 master 、slave1、slave2 的/opt目录2. 分别在master 、slave1、slave2上执行解压指令 tar -zxf /opt/zk-hbase-1013.tar.gz -C /tar -zxf /opt/zk-hbase-1013.tar.gz -C /3. 在slave1上执行 sed -i "1c\2" /usr/local/zookeeper/data/myid sed -i "1c\2" /usr/local/zookeeper/data/myid4. 在slave2上执行sed -i "1c\3" /usr/local/zookeeper/data/myid5. Xshell分别断开,并重新登陆到 master 、slave1、slave2 6. 在 master 、slave1、slave2 分别执行 zkServer.sh start 7. 稍等30秒,在master上执行start-hbase.sh 8. 用jps查看master,有如下的进程:jps1457 NameNode1636 SecondaryNameNode2900 HMaster2731 QuorumPeerMain1791 ResourceManager9. 用jps查看slave1,有如下的进程:ssh slave1 jps[root@master bin]# ssh slave1 jps1189 DataNode1285 NodeManager1623 QuorumPeerMain1721 HRegionServer10. Google浏览器上访问 http://ip地址:16010/
Hbase-shell操作
任务具体要求:============为疫情防控需要,在hbase上设计一张表,记录在校人员的核酸检测信息。表名称为epc_tab, 包括2个列族,列族binfo中保存基本信息,pcinfo中保存核酸监测记录,不同的监测结果通过不同的版本记录,考虑到每人有很多检测结果,设置该列族版本数为500;用学生的学号作为行键rowkey,phone填电话号或QQ,NAT为核酸检测结果,阴性为N,阳性为P。具体的表模式见下图。通过hbase shell 上操作实现如下任务在每台节点机上面启动hadoop,zookeeper,hbase查看进程:Hadoop102Hadoop103Hadoop104在hadoop102打开hbase shell进行建表操作 1. 根据要求创建表epc_tab 2.用你的学号和姓名等信息插入一行记录,(汉字用拼音代替,后面相同)3. 用你周围的同学的学号和姓名再插入3行记录4. 查询出你的那条记录的最新监测结果5. 查询出你的那条记录的最近5次的监测结果 6. 查询出全部人员的最新检测结果7. 删除你的核酸检测结果8. 停用表,然后删除表 以上2个列族,列族binfo中保存基本信息,pcinfo中保存核酸监测记录,不同的监测结果通过不同的版本记录,考虑到每人有很多检测结果,设置该列族版本数为500;并用学生的学号作为行键rowkey,phone填电话号或QQ,NAT为核酸检测结果,阴性为N,阳性为P
mapreduce单词统计
MapReduce单词计数示例 输入hello world our worldhello bigdata real bigdatahello hadoop great hadoophadoop mapreduce输出bigdata 2great 1hadoop 3hello 3mapreduce 1our 1real 1world 2 代码运行MapReduce运行流程:input、split、map、shuffle、reduce、output1.默认情况下,分片个数与数据块个数一致2.一个分片对应一个Map3.Map与Reduce读取与输出的数据均为键值对4.Shuffle阶段能够按键对数据进行分组、排序MapReduce中的数据类型实现Mapper类实现Reducer类实现Driver类1. package mr;
2.
3. import java.io.IOException;
4. import java.util.StringTokenizer;
5.
6. import org.apache.hadoop.conf.Configuration;
7. import org.apache.hadoop.fs.Path;
8. import org.apache.hadoop.io.IntWritable;
9. import org.apache.hadoop.io.Text;
10. import org.apache.hadoop.mapreduce.Job;
11. import org.apache.hadoop.mapreduce.Mapper;
12. import org.apache.hadoop.mapreduce.Reducer;
13. import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
14. import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
15. import org.apache.hadoop.mapreduce.lib.partition.HashPartitioner;
16.
17. public class WordCount {
18. // map方法,划分一行文本,读一个单词写出一个<单词,1>
19. public static class MyMapper extends Mapper<Object, Text, Text, IntWritable> {
20. private final static IntWritable one = new IntWritable(1);
21. private Text text = new Text();
22. @Override
23. protected void map(Object key, Text value,
24. Mapper<Object, Text, Text, IntWritable>.Context context)
25. throws IOException, InterruptedException {
26. // 示例输入 key-->0 values-->"hello python hello hadoop"
27. // 对应输出 <'hello', 1> <'python', 1> <'hello', 1> <'hadoop', 1>
28. StringTokenizer sti = new StringTokenizer(value.toString());
29. while (sti.hasMoreTokens()) {
30. text.set(sti.nextToken());
31. context.write(text, one);
32. }
33. }
34. }
35.
36. // 定义reduce类,对相同的单词,把它们中的VList值全部相加
37. public static class MyReduce extends Reducer<Text, IntWritable, Text, IntWritable> {
38. private IntWritable result1 = new IntWritable();
39. @Override
40. protected void reduce(Text key, Iterable<IntWritable> values,
41. Reducer<Text, IntWritable, Text, IntWritable>.Context context)
42. throws IOException, InterruptedException {
43. // 示例输入 key-->Hello values--><1,1,1,1>
44. // 对应输出 key-->Hello value-->4
45. int sum = 0;
46. for(IntWritable val:values){
47. sum += val.get();
48. }
49. result1.set(sum);
50. context.write(key, result1);
51. }
52. }
53.
54. public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
55. Configuration conf = new Configuration(); //创建配置类
56. Job job = Job.getInstance(conf, "Word-Count204"); //实例化Job类
57.
58. job.setJarByClass(WordCount.class); //设置主类名
59.
60. TextInputFormat.setInputPaths(job, new Path(args[0])); //设置待输入文件的位置
61. job.setInputFormatClass(TextInputFormat.class); //指定使用字符串输入格式类
62.
63. job.setMapperClass(MyMapper.class); //指定使用自定义Map类
64. job.setMapOutputKeyClass(Text.class); //指定Map类输出的,K类型,(如果同Reduce类的输出可省略)
65. job.setMapOutputValueClass(IntWritable.class); //指定Map类输出的,V类型,(如果同Reduce类的输出可省略)
66.
67. job.setReducerClass(MyReduce.class); //指定使用自定义Reduce类
68. job.setOutputKeyClass(Text.class); //指定Reduce类输出的,K类型
69. job.setOutputValueClass(IntWritable.class); //指定Reduce类输出的,V类型
70. //job.setNumReduceTasks(Integer.parseInt(args[2])); //指定Reduce个数
71.
72. job.setOutputFormatClass(TextOutputFormat.class); //指定使用默认输出格式类
73. TextOutputFormat.setOutputPath(job, new Path(args[1])); //设置输出结果文件位置
74.
75. System.exit(job.waitForCompletion(true)? 0:1); //提交任务并监控任务状态,等待任务完成
76. }
77. }
78.总结Ø创建Job对象Ø设置主类Ø设置输入Ø设置Mapper类、设置输出的键和值类型Ø设置Reducer类、设置输出的键和值类型Ø设置输出Ø提交任务
HDFSAPI编程源码-文件写入
理解HDFS Java API编程原理;掌握HDFS的命令;掌握Elipse远程调试Hadoop程序的方法;掌握HDFS基本的API调用方法通过调用Java API实现对HDFS的文件系统的操作将fout中的文本内容写入fin路径下的文件中1. package hdfsapi;
2.
3. import java.io.BufferedReader;
4. import java.io.BufferedWriter;
5. import java.io.File;
6. import java.io.FileInputStream;
7. import java.io.IOException;
8. import java.io.InputStreamReader;
9. import java.io.OutputStreamWriter;
10. import java.net.URI;
11.
12. import org.apache.commons.io.CopyUtils;
13. import org.apache.hadoop.conf.Configuration;
14. import org.apache.hadoop.fs.FSDataInputStream;
15. import org.apache.hadoop.fs.FSDataOutputStream;
16. import org.apache.hadoop.fs.FileSystem;
17. import org.apache.hadoop.fs.Path;
18. import org.apache.hadoop.io.IOUtils;
19.
20. public class E7_WriteDataAPI {
21.
22. public static void main(String[] args) throws IllegalArgumentException, IOException, InterruptedException {
23. // TODO Auto-generated method stub
24. Configuration conf =new Configuration();
25. conf.set("fs.defaultFS", "hdfs://master:8020");
26. conf.setBoolean("dfs.support.append", true);
27. conf.set("dfs.client.block.write.replace-datanode-on-failure.policy", "NEVER");
28. FileSystem fs = FileSystem.get(URI.create("hdfs://master:8020"),conf,"root");
29.
30. FileInputStream fin = new FileInputStream(new File("E:\\tmp\\workspace\\test2.txt"));
31. FSDataOutputStream fout = fs.append(new Path("/user/root/hello1.txt"));
32. IOUtils.copyBytes(fin, fout, 4096,true);
33. fout.close();
34. fin.close();
35. fs.close();
36. System.out.println("done!");
37. }
38.
39. }
HDFSAPI编程源码-文件删除
理解HDFS Java API编程原理;掌握HDFS的命令;掌握Elipse远程调试Hadoop程序的方法;掌握HDFS基本的API调用方法删除传入的路径下的指定的文件1. package hdfsapi;
2.
3. import java.io.IOException;
4. import java.net.URI;
5.
6. import org.apache.hadoop.conf.Configuration;
7. import org.apache.hadoop.fs.FileSystem;
8. import org.apache.hadoop.fs.Path;
9.
10. public class E5_DeleteAPI {
11. public static void main(String[] args) throws IOException, InterruptedException {
12. Configuration conf = new Configuration();
13. conf.set("fs.defaultFS", "hdfs://master:8020");
14. FileSystem fs = FileSystem.get(URI.create("hdfs://master:8020"), conf, "root");
15. fs.delete(new Path("/user/root/text1"), true);
16. System.out.println("done!");
17. }
18.
19. }
HDFSAPI编程源码-文件本地拷贝
理解HDFS Java API编程原理;掌握HDFS的命令;掌握Elipse远程调试Hadoop程序的方法;掌握HDFS基本的API调用方法 文件的本地路径拷贝1. package hdfsapi;
2.
3. import java.io.IOException;
4.
5. import org.apache.hadoop.conf.Configuration;
6. import org.apache.hadoop.fs.FileSystem;
7. import org.apache.hadoop.fs.Path;
8.
9. public class E4_CopyToLocalAPI {
10.
11. public static void main(String[] args) throws IOException {
12. Configuration conf = new Configuration();
13. conf.set("fs.defaultFS", "hdfs://master:8020");
14. FileSystem fs = FileSystem.get(conf);
15. fs.copyToLocalFile(false, new Path("/user/root/text1"), new Path("E:\\tmp\\workspace\\text1.txt"), true);
16. System.out.println("done!");
17. }
18.
19. }
HDFSAPI编程源码-java文件拷贝
通过调用Java API实现对HDFS的文件系统的操作-文件拷贝 1. package hdfsapi;
2.
3. import java.io.IOException;
4. import java.net.URI;
5.
6. import org.apache.hadoop.conf.Configuration;
7. import org.apache.hadoop.fs.FileSystem;
8. import org.apache.hadoop.fs.Path;
9.
10. public class E3_CopyFromLocalAPI {
11.
12. public static void main(String[] args) throws IOException, InterruptedException {
13. //获取配置
14. Configuration conf =new Configuration();
15. //用root用户去获取文件系统对象
16. FileSystem fs = FileSystem.get(URI.create("hdfs://master:8020"), conf, "root");
17.
18. Path localsrc = new Path("E:\\tmp\\workspace\\word.txt");
19. fs.copyFromLocalFile(localsrc, new Path("/user/root/"));
20. System.out.println("done!");
21. }
22. }理解HDFS Java API编程原理;掌握HDFS的命令;掌握Elipse远程调试Hadoop程序的方法;掌握HDFS基本的API调用方法