本文说明本文只是简单的安装,没有使用案例FLume是一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输系统可以实时的把本地文件系统的数据,传输到HDFS上解压[root@master~]#cd/usr/local/src/flume/[root@masterflume]#tar-zxvfapache-flume-1.6.0-bin.tar.gz配置环境变量把flume的bin/目录加入环境变量[root@masterflume]#vi~/.bash_profile#FlumeexportFLUME_HOME=/usr/local/src/flume/apache-flume-1.6.0-binexportPATH=$PATH:$FLUME_HOME/bin:[root@masterflume]#source~/.bash_profile修改配置进入flume的conf/目录下#复制一份模板flume-env.sh[root@masterconf]#cpflume-env.sh.templateflume-env.sh#修改flume-env.sh[root@masterconf]#viflume-env.sh#加入Java的路径#Enviromentvariablescanbesethere.#exportJAVA_HOME=/usr/lib/jvm/java-6-sunexportJAVA_HOME=/usr/java/jdk1.8.0_221#更新flume-env.sh文件[root@masterconf]#sourceflume-env.sh查看Flume的版本,这样就是安装成功了,Flume没有像Hadoop的namenode那样的服务节点Flume在使用时,就是提交一个任务,然后它去执行#注意flume的命令是flume-ng开头[root@masterconf]#flume-ngversionFlume1.6.0Sourcecoderepository:https://git-wip-us.apache.org/repos/asf/flume.gitRevision:2561a23240a71ba20bf288c7c2cda88f443c2080CompiledbyhshreedharanonMonMay1111:15:44PDT2015Fromsourcewithchecksumb29e416802ce9ece3269d34233baf43f
Hive的基本数据类型与Java类似Hive的数据类型Java是数据类型长度TINYINTbyte1byte整数SMALINTshort2byte整数INTint4byte整数BIGINTlong8byte整数BOOLEANboolean布尔值FLOATfloat单精度浮点数DOUBLEdouble双精度浮点数STRINGstring字符串TIMESTAMP时间类型BINARY字节数组Hive的集合数据类型数据类型描述语法实例实例ARRAY相当于Java的数组array<基本类型>[‘Bob’,’bigdataboy’,’cn’]MAP相当与Java的Array集合,键值对map<基本类型-键,基本类型-值>{‘name’,’bigdataboy’}STRUCT是一个复合结构类型struct<>{‘province’:基本类型,’city’:基本类型}集合数据类型测试字段及类型四个字段namestring,friendsarray<string>,childrenmap<string,int>,addrstruct<'省':string,'市':string>分割符说明字段使用,(英文逗号)分隔array<>类型使用_(下划线)分割map<>类型手机用:(冒号)分割测试数据#数据说明Bob,第一个字段aa_bb,第二个array<>字段aa:12_bb:13,第三个map<>字段四川_成都第四个struct<>字段#完整测试数据Bob,aa_bb,aa:12_bb:13,四川_成都Black,cc_dd,cc:24_dd:23,四川_泸州Hive创建表createtableinfor(namestring,friendsarray<string>,childrenmap<string,int>,addrstruct<province:string,city:string>)rowformatdelimitedfieldsterminatedby','collectionitemsterminatedby'_'mapkeysterminatedby':'linesterminatedby'\n';在Hive中创建好表,加载到Hive中loaddatalocalinpath'加载的测试数据文件路径'intotableinfor;Hive查看加载的数据#查看所有数据hive>select*frominfor;OKBob["aa","bb"]{"aa":12,"bb":13}{"province":"四川","city":"成都"}Black["cc","dd"]{"cc":24,"dd":23}{"province":"四川","city":"泸州"}Timetaken:2.4seconds,Fetched:2row(s)#查看不同类型的数据hive>selectname,friends[0],children['aa'],addr.provincefrominfor;OKBobaa12四川BlackccNULL四川Timetaken:0.098seconds,Fetched:2row(s)
以下命令针对的是Hive1.2.2所有的shell命令[root@master~]#hive-helpusage:hive-d,--define<key=value>Variablesubsitutiontoapplytohivecommands.e.g.-dA=Bor--defineA=B--database<databasename>Specifythedatabasetouse-e<quoted-query-string>SQLfromcommandline-f<filename>SQLfromfiles-H,--helpPrinthelpinformation--hiveconf<property=value>Usevalueforgivenproperty--hivevar<key=value>Variablesubsitutiontoapplytohivecommands.e.g.--hivevarA=B-i<filename>InitializationSQLfile-S,--silentSilentmodeininteractiveshell-v,--verboseVerbosemode(echoexecutedSQLtotheconsole)常用命令1-e无需打开Hive执行HQL命令[root@master~]#hive-e'select*fromstudent'Logginginitializedusingconfigurationinjar:file:/usr/local/src/hive/apache-hive-1.2.2-bin/lib/hive-common-1.2.2.jar!/hive-log4j.propertiesOK1aa2bb3ccTimetaken:12.088seconds,Fetched:3row(s)常用命令2-f无需打开Hive执行文件中的HQL命令\>把查询结果导出到文件[root@master~]#hive-fstu.hql>stu_res.txtLogginginitializedusingconfigurationinjar:file:/usr/local/src/hive/apache-hive-1.2.2-bin/lib/hive-common-1.2.2.jar!/hive-log4j.propertiesOKTimetaken:12.065seconds,Fetched:3row(s)[root@master~]#ll总用量16-rw-------.1rootroot134011月422:29anaconda-ks.cfg-rw-r--r--.1rootroot2312月2817:22stu.hql-rw-r--r--.1rootroot1512月2817:25stu_res.txt[root@master~]#catstu_res.txt1aa2bb3ccHive常用的交互命令退出命令hive>exit;先隐性提交数据,再退出hive>quit;不提交数据,退出打开HDFS目录dfs-ls/hive>dfs-ls/>;Found2itemsdrwx-wx-wx-rootsupergroup02019-12-2616:46/tmpdrwxr-xr-x-rootsupergroup02019-12-2816:13/user打开本地目录!ls/roothive>!ls/root;anaconda-ks.cfgstudent.txtstu.hqlstu_res.txt查看Hive中输入的所有历史命令在当前用户的根目录查看cat.hivehistory
1、问题描述[ERROR]Terminalinitializationfailed;fallingbacktounsupported处理删除$HADOOP_HOME/share/hadoop/yarn/lib/jline-0.9.94.jar文件然后重新启动hive即可2、问题描述[root@masterconf]#schematool-dbTypemysql-initSchemaMetastoreconnectionURL:jdbc:mysql://192.168.176.65:3306/hiveMetastoreConnectionDriver:com.mysql.jdbc.DriverMetastoreconnectionUser:rootorg.apache.hadoop.hive.metastore.HiveMetaException:Failedtogetschemaversion.***schemaToolfailed***[root@masterconf]#cd..处理开启MySQL的远程访问,并重启MySQL
相关版本名称详情Hive1.2.2(下载地址)MySQL驱动connector-java-5.1.48(下载地址)MySQL安装教程地址解压Hive的tar包#进入src目录cd/usr/local/src/#创建hive目录mkdirhive#解压tar包到创建的hive目录tar-zxvfapache-hive-1.2.2-bin.tar.gz-Chive/配置环境变量#编辑环境变量vi~/.bash_profile#加入环境变量#HiveexportHIVE_HOME=/usr/local/src/hive/apache-hive-1.2.2-binexportPATH=$HIVE_HOME/bin:$PATH:#更新环境变量source~/.bash_profile修改Hive配置文件#进入conf[root@masterconf]#ll总用量188-rw-rw-r--.1rootroot11394月302015beeline-log4j.properties.template-rw-rw-r--.1rootroot1684316月192015hive-default.xml.template-rw-rw-r--.1rootroot23784月302015hive-env.sh.template-rw-rw-r--.1rootroot26624月302015hive-exec-log4j.properties.template-rw-rw-r--.1rootroot30504月302015hive-log4j.properties.template-rw-rw-r--.1rootroot15934月302015ivysettings.xml#复制hive-env.sh模板[root@masterconf]#cphive-env.sh.templatehive-env.sh#编辑hive-env.sh的内容[root@masterconf]#vihive-env.sh#加入HADOOP_HOME的路径#SetHADOOP_HOMEtopointtoaspecifichadoopinstalldirectoryHADOOP_HOME=/usr/local/src/hadoop/hadoop-2.9.2#修改了HIVE的配置,指定修改的配置的文件#HiveConfigurationDirectorycanbecontrolledby:exportHIVE_CONF_DIR=/usr/local/src/hive/apache-hive-1.2.2-bin/conf#保存退出,更新hive-env.sh文件[root@masterconf]#sourcehive-env.sh尝试进入Hive,在退出在进入之前需要删除一个文件删除$HADOOP_HOME/share/hadoop/yarn/lib/jline-0.9.94.jar文件[root@masterconf]#hiveLogginginitializedusingconfigurationinjar:file:/usr/local/src/hive/apache-hive-1.2.2-bin/lib/hive-common-1.2.2.jar!/hive-log4j.propertieshive>exit;[root@masterconf]#MySQL配置首先进入MySQL里,修改完成后,记得重启数据库1、开启MySQL远程连接mysql>GRANTALLPRIVILEGESON*.*TO'root'@'%'IDENTIFIEDBY'密码';mysql>flushprivileges;2、创建一个数据库mysql>createdatabasehive;QueryOK,1rowaffected(0.00sec)配置Hive数据库为MySQL需要在$HIVE_HOME的conf目录下复制一个模板如果不复制模板,可以单独创建hive-site.xml文件,注意使用<configuration>标签把配置包裹起来cphive-default.xml.templatehive-site.xml<!--配置MySQL数据库地址--><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://MySQL的IP:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value><description>JDBCconnectstringforaJDBCmetastore</description></property><!--配置MySQL驱动--><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value><description>DriverclassnameforaJDBCmetastore</description></property><!--配置用户名--><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value><description>Usernametouseagainstmetastoredatabase</description></property><!--配置密码--><property><name>javax.jdo.option.ConnectionPassword</name><value>Aa@12345678</value><description>passwordtouseagainstmetastoredatabase</description></property><!--复制模板的需要添加--><property><name>system:java.io.tmpdir</name><value>/usr/local/src/hive/tmpdir</value></property><property><name>system:user.name</name><value>hive</value></property>初始化Hive数据库首先需要把MySQL驱动放入Hive的lib目录下[root@masterconf]#schematool-dbTypemysql-initSchemaMetastoreconnectionURL:jdbc:mysql://192.168.176.65:3306/hiveMetastoreConnectionDriver:com.mysql.jdbc.DriverMetastoreconnectionUser:rootStartingmetastoreschemainitializationto1.2.0Initializationscripthive-schema-1.2.0.mysql.sqlInitializationscriptcompletedschemaToolcompleted(初始化完成)[root@masterconf]#启动Hive[root@masterhive]#hiveLogginginitializedusingconfigurationinjar:file:/usr/local/src/hive/apache-hive-1.2.2-bin/lib/hive-common-1.2.2.jar!/hive-log4j.propertieshive>推荐阅读:Hive搭建常见错误
版本名称详情MySQL5.7(下载地址)平台CentOS7安装MySQL数据库检查CentOS是否安装有MySQL或者mariadb数据库rpm-qa|grep-imysql-qa:检查grep:过滤-i不区分大小写如有安装,卸载掉MySQL或者mariadb数据库[root@masterbin]#rpm-qa|grepmariadbmariadb-libs-5.5.64-1.el7.x86_64#删除mariadb数据库yumremovemariadb-libs-5.5.64-1.el7.x86_64安装MySQL组件以下组件有相互的依赖关系,所以需要安装这样的顺序安装,如果顺序错了,会提示依赖错误rpm-ivhmysql-community-common-5.7.28-1.el7.x86_64.rpmrpm-ivhmysql-community-libs-5.7.28-1.el7.x86_64.rpmrpm-ivhmysql-community-client-5.7.28-1.el7.x86_64.rpmyuminstallperlyuminstallnet-toolsrpm-ivhmysql-community-server-5.7.28-1.el7.x86_64.rpm启动mySQL数据库不启动,不会生成初始密码systemctlrestartmysqld查看随机密码第一种:cat/var/log/mysqld.log第二种:greppassword/var/log/mysqld.log修改密码首先进入数据库密码强度需要大小写母特殊字符数字最少8位SETPASSWORD=PASSWORD('新密码');修改MySQL密码强度策略#查看密码策略SHOWVARIABLESLIKE"%password%";#修改密码长度策略为5就是密码长度最短5位SETGLOBALvalidate_password_length=5;#修改密码强度策略0就不需要大小写字母和符号SETGLOBALvalidate_password_policy=0;
需要导入的包注意导入mapreduce的新版本包带mapreduce的importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.Path;importorg.apache.hadoop.io.LongWritable;importorg.apache.hadoop.io.Text;importorg.apache.hadoop.mapreduce.Job;importorg.apache.hadoop.mapreduce.Mapper;importorg.apache.hadoop.mapreduce.Reducer;importorg.apache.hadoop.mapreduce.lib.input.FileInputFormat;importorg.apache.hadoop.mapreduce.lib.output.FileOutputFormat;importjava.io.IOException;MapReduce程序结构publicclassWordCountApp{//进行分割的map类publicstaticclassMyMapperextendsMapper<LongWritable,Text,Text,LongWritable>{......}//归并操作的Reducer类publicstaticclassMyReducerextendsReducer<Text,LongWritable,Text,LongWritable>{......}//定义Drive类(main类)publicstaticvoidmain(String[]args)throwsException{......}}map类:对读取的每一行单词进行分割操作,形成键值对Reducer类:把分割完成的键值对-->key,value,进行归并求和并输出Drive类:设置MapReduce作业提交、数据的输入路径、map的处理类、Reducer的处理类、数据的输出路径map分割操作的详解Mapper类四个泛型参数前两个参数为map输入类型,后两个参数为map的输出类型LongWritable:输入数据的首行的偏移量(相当于Java的Long类型)Text:输入的每一行的数据(相当于Java的String类型)Text:分割之后产生的键值对键的类型LongWritable:分割之后产生的键值对值的类型publicstaticclassMyMapperextendsMapper<LongWritable,Text,Text,LongWritable>{/**reduce参数:*LongWritablekey:输入数据的行的偏移量*Textvalue:读取的每一行数据*Contextcontext上下文连接**/@Overrideprotectedvoidmap(LongWritablekey,Textvalue,Contextcontext)throwsIOException,InterruptedException{//接收到的每一行数据,转化成Java的字符串Stringline=value.toString();//把字符串进行空格分隔,返回一个数组String[]words=line.split("");//返回字符串数组//利用循环使用context.write(key,value);组合成k,v形式for(Stringword:words){//通过context(上下文连接)把map分割的k、v输出context.write(newText(word),newLongWritable(1));//前面设置了返回值为Text,LongWritable类型}}}Reducer归并操作的详解Reducer类四个泛型参数前两个参数为Reducer输入类型,后两个参数为Reducer的输出类型Text:map的输出类型,就是Reduse的输入类型LongWritable:map的输出类型,就是Reduse的输入类型Text:进行归并操作之后的键值对-->键的类型LongWritable:进行归并操作之后的键值对-->的值类型publicstaticclassMyReducerextendsReducer<Text,LongWritable,Text,LongWritable>{/**reduce参数:*Textkey:Map操作后的键值对的键*Iterable<LongWritable>values:当进行Map操作之后,一个键可能有很多对应的值所以是一个迭代类型*Contextcontext上下文连接**/@Overrideprotectedvoidreduce(Textkey,Iterable<LongWritable>values,Contextcontext)throwsIOException,InterruptedException{//这里只需要把出现的迭代类型进行求和longsum=0;for(LongWritablevalue:values){//把LongWritable转成Java的数据类型进行求和sum+=value.get();}//最终的统计结果通过上下文连接输出context.write(key,newLongWritable(sum));}}定义Drive类(main类)publicstaticvoidmain(String[]args)throwsException{//抛出异常//创建一个Configuration对象Configurationconfiguration=newConfiguration();//注意是hadoop里的//创建一个Job,如有异常,先把异常抛出Jobjob=Job.getInstance(configuration,"wordCount");//设置Job的处理类job.setJarByClass(WordCountApp.class);//类名称//设置需要处理数据的输入路径FileInputFormat.setInputPaths(job,newPath(args[0]));//路径通过脚本参数传入//设置map的处理主类job.setMapperClass(MyMapper.class);//指定Mapper处理类job.setMapOutputKeyClass(Text.class);//设置map处理类的k输出类型job.setMapOutputValueClass(LongWritable.class);//设置map处理类的v输出类型//设置reducer的处理主类job.setReducerClass(MyReducer.class);//指定Reduse处理类job.setOutputKeyClass(Text.class);//设置reducer处理类的k输出类型job.setOutputValueClass(LongWritable.class);//设置reducer处理类的v输出类型//设置作业的输出路径FileOutputFormat.setOutputPath(job,newPath(args[1]));//路径通过脚本参数传入//提交作业booleanb=job.waitForCompletion(true);//参数为true确定提交//退出程序System.exit(b?0:1);//程序推出的状态码0正常}上传到hadoop执行首先把程序打成jar包。idea打jar教程hadoop执行jar命令:hadoopjarJar名称输入路径输出路径hadoopjarhadooptrain.jarhdfs://192.168.5.137:9000/words.txthdfs://192.168.5.137:9000/output执行结果
特别提示执行前需要启动hadoopIDEA创建Hadoop-Maven项目下载hadoop.dll放入windows的C:\Windows\System32下相关环境windows10hadoop2.9.2伪分布式搭建idea2018.3.50x00JAVA连接HDFS配置连接publicstaticfinalStringHDFS_PATH="hdfs://192.168.5.137:9000";//HDFS路径FileSystemfileSystem=null;//操作文件系统注意选中apache的类Configurationconfiguration=null;//HDFS配置连接创建连接方法@Before//所有执行完之前执行publicvoidsetUp()throwsException{configuration=newConfiguration();//实例化类fileSystem=FileSystem.get(newURI(HDFS_PATH),configuration,"root");//参数:路径配置类用户}0x01执行结束时释放资源@After//所有执行完之后再执行publicvoidtearDown()throwsException{//结束释放资源configuration=null;fileSystem=null;}0x02创建文件夹@Test//单元测试publicvoidmkidr()throwsException{fileSystem.mkdirs(newPath("/HDFSAPI/test"));}0x03删除文件操作@Testpublicvoiddelete()throwsException{//参数:路径递归删除booleanmsg=fileSystem.delete(newPath("/HDFSAPI/test/a.txt"),true);}0x04创建文件并写入内容@Test//单元测试publicvoidcreate()throwsException{//返回值是一个文件流FSDataOutputStreamoutput=fileSystem.create(newPath("/HDFSAPI/test/e.txt"));//通过流写入一个Bytes[]数组output.write("hellohadoop".getBytes());output.flush();//把文件流关闭output.close();}0x05查看文件内容@Test//单元测试publicvoidcat()throwsException{FSDataInputStreamfile=fileSystem.open(newPath("/HDFSAPI/test/e.txt"));//把内容输出到控制台使用hadoop里的类IOUtils.copyBytes(file,System.out,1024);//文件内容对象输出到控制台缓冲区大小//关闭file.close();}0x06文件的重命名@Test//单元测试publicvoidrename()throwsException{//旧文件的路径PatholdPath=newPath("/HDFSAPI/test/a.txt");//新文件的路径booleanmsg=fileSystem.rename(oldPath,newPath);}0x07本地上传文件到HDFS@TestpublicvoidcopyFromLocalFile()throwsException{//本地路径--->我是在windows上测试的所以是如下地址PathLocalPath=newPath("D://data.txt");//上传到HDFS上的路径PathHDFSPath=newPath("/HDFSAPI/test/");fileSystem.copyFromLocalFile(LocalPath,HDFSPath);}0x08大文件上传带进度条提示@TestpublicvoidcopyFromLocalFileWithProgress()throwsException{//获取需要上传的文件InputStreamfile=newBufferedInputStream(//为了提升效率使用BuffernewFileInputStream(//需要把File转换为StreamnewFile("F://BigData/hadoop/hadoop-2.9.2.tar.gz")));//创建上传的文件路径FSDataOutputStreamoutput=fileSystem.create(newPath("/HDFSAPI/test/newhadoop-2.9.2.tar.gz"),//第一个参数可以进行重命名newProgressable(){//第二个参数打印的进度条@Overridepublicvoidprogress(){System.out.print("*");//提示的进度条图案}});//上传IOUtils.copyBytes(file,output,4096);}0x09下载文件@TestpublicvoidcopyToLocalFrom()throwsException{PathhdfsPath=newPath("/HDFSAPI/test/a.txt");//本地路径PathlocalPath=newPath("F://a.txt");fileSystem.copyToLocalFile(hdfsPath,localPath);}0x10查看目录下的所有文件@TestpublicvoidlistFile()throwsException{//需要查看的hdfs目录PathhdfsPath=newPath("/HDFSAPI/test");FileStatus[]fileStatuses=fileSystem.listStatus(hdfsPath);for(FileStatusfile:fileStatuses){//输出路径StringfilePath=file.getPath().toString();//查看是否是目录StringisDir=file.isDirectory()?"文件夹":"文件";//输出文件大小longfileSize=file.getLen();//输出文件的副本数量shortfileReplication=file.getReplication();//输出打印System.out.println(filePath+"\t"+isDir+"\t"+fileSize+"\t"+fileReplication+"\t");}}常见问题org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSumsByteArray(II[BI[BIILjava/lang/String;JZ)V解决方法下载hadoop.dll放入windows的C:\Windows\System32下错误描述Namenodeisinsafemode.Namenode处于安全模式解决方法:关闭安全模式关闭安全模式hadoopdfsadmin-safemodeleave进入安全模式hadoopdfsadmin-safemodeenter通过JavaAPI上传,与Hadoopshell上传的文件,副本系数不一样解释:JavaAPI上传,我们并没有指定副本系数,所以上传的副本数是hadoop默认的3Hadoopshell上传,我在hdfs-site.xml里设置过副本数,所以不会使用默认值
相关配置hadoop-2.9.2伪分布式搭建0x00说明首先需要配置hadoop的伪分布式0x01修改mapred-site.xml修改MapReduce配置文件mapred-site.xml路径hadoop-2.9.2/etc/hadoop/mapred-site.xml将模板文件mapred-site.xml.template拷贝一份,并重命名为mapred-site.xml,命令cpmapred-site.xml.templatemapred-site.xml<configuration><!--指定MapReduce运行在yarn--><property><name>mapreduce.framework.name</name><value>yarn</value></property></configuration>0x02修改yarn-site.xml配置资源协调工具yarn的修改路径hadoop-2.9.2/etc/hadoop/yarn-site.xml<configuration><!--SitespecificYARNconfigurationproperties--><!--指定yarn的老大resoucemanager的地址--><property><name>yarn.resourcemanager.hostname</name><name>hadoop</name></property><!--NodeManager获取数据的方式--><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property></configuration>0x03启动资源管理器启动命令start-yarn.sh0x04验证启动结果出现以下节点代表,启动成功网页端查看IP:8088/
name文件夹不存在错误描述:Directory/usr/local/src/hadoop/tmp/dfs/nameisinaninconsistentstate:storagedirectorydoesnotexistorisnotaccessible.处理方法:创建name文件重新格式化再次启动namenode无法启动错误描述:当把hadoop停止之后,再次启动没有namenode节点处理方法:清空临时目录tmp里面的data下的东西,再次启动namenode处于安全模式错误描述Namenodeisinsafemode.Namenode处于安全模式处理方式:关闭安全模式hadoopdfsadmin-safemodeleave进入安全模式hadoopdfsadmin-safemodeenterHive无法跑MR任务错误描述Taskwiththemostfailures(4):-----TaskID:task_1594519690907_0001_m_000000URL:http://0.0.0.0:8088/taskdetails.jsp?jobid=job_1594519690907_0001&tipid=task_1594519690907_0001_m_000000-----DiagnosticMessagesforthisTask:Containerlaunchfailedforcontainer_1594519690907_0002_01_000005:org.apache.hadoop.yarn.exceptions.InvalidAuxServiceException:TheauxService:mapreduce_shuffledoesnotexistatsun.reflect.NativeConstructorAccessorImpl.newInstance0(NativeMethod)atsun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)atsun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)atjava.lang.reflect.Constructor.newInstance(Constructor.java:423)atorg.apache.hadoop.yarn.api.records.impl.pb.SerializedExceptionPBImpl.instantiateExceptionImpl(SerializedExceptionPBImpl.java:171)atorg.apache.hadoop.yarn.api.records.impl.pb.SerializedExceptionPBImpl.instantiateException(SerializedExceptionPBImpl.java:182)atorg.apache.hadoop.yarn.api.records.impl.pb.SerializedExceptionPBImpl.deSerialize(SerializedExceptionPBImpl.java:106)atorg.apache.hadoop.mapreduce.v2.app.launcher.ContainerLauncherImpl$Container.launch(ContainerLauncherImpl.java:162)atorg.apache.hadoop.mapreduce.v2.app.launcher.ContainerLauncherImpl$EventProcessor.run(ContainerLauncherImpl.java:393)atjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)atjava.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)atjava.lang.Thread.run(Thread.java:748)FAILED:ExecutionError,returncode2fromorg.apache.hadoop.hive.ql.exec.mr.MapRedTaskMapReduceJobsLaunched:Stage-Stage-1:Map:1Reduce:1HDFSRead:0HDFSWrite:0FAILTotalMapReduceCPUTimeSpent:0msec处理方式:#确认yarn-site.xml的配置是否正确<!--NodeManager获取数据的方式--><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property>#然后重启Hadoop
0x00相关软件及版本maven:3.6.2IDEA:2018.3.5hadoop:2.9.2maven依赖搜索地址windows_10_64位0x01IDEA配置打开设置File-->setting0x02创建Maven项目IDEA新建一个工程配置项目的名称版本把本地安装的maven添加进去(本文版本说明有maven安装步骤)然后直接再下一步,finish完成上面后,右下角弹出下图模样(这样如果需要什么hadoop的依赖包就会下载)0x03添加hadoop的依赖安装下图修改自行修改,等在依赖下载完成<dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>2.9.2</version></dependency>修改一下上图的文件配置(方便以后的版本管理)这样就修改完成查看maven安装相关依赖(这也是maven的方便之处,就不需要自己去安装了)0x04总结maven:可以一键下载相关依赖文件,hadoop的依赖文件非常多,自己一个一个去安装根本不现实,所以这是一个非常方便的管理器
0x00本地文件上传到HDFS方法一hadoopfs-puttest.txt/把test.txt放在hdsf的根目录方法二hadoopfs-copyFromLocaltest.txt/h.txt把text.txt放在hdfs根目录上并重命名为h.txt0x01文件从HDFS上下载到本地方法一hadoopfs-get/h.txt把h.txt从hdfs上拿到本地来方法二hadoopfs-copyToLocal/test.txth.txt把test.txt从hdfs上拿到本地并重命名为h.txt0x02在HDFS上创建目录创建单层目录hadoopfs-mkdir/dir在hdfs的根目录创建dir目录创建多层目录hadoopfs-mkdir-p/dir/a/b/c在hdfs创建多级目录0x03查看HDFS上的文件及内容hadoopfs-cat/test.txt查看hdfs上test.txt的内容hadoopfs-ls/查看hdsf根目录