当我卡了一个星期以后,实在是没办法,最后以root权限操作hdfs,但是我不想这么妥协,hadoop用户也必须可以使用!!!!
sudo获得权限后,hadoop执行语句如下
sudo /export/server/hadoop/sbin/start-dfs.sh
但是这个最好还是在root下面执行,因为没办法看jps进程
1.hdfs dfs -cat xxx(文件)|more
more命令是按空格键查看下一位
2.hadoop fs -cp [-f] …这个cp命令左右都是hadoop文件里的,跟本地文件无关
cp命令兼具改名功能,dst复制过去你想写什么就写什么
3.追加功能
hdfs dfs -appendToFile append.txt /test.txt
标注,只能追加或者删除,不可修改
补充,追加功能在本地文件里面是
echo “appended content” >> filename或者
cat file1 >> file2
4.移动功能
-mv
hadoop fs -mv /test2.txt /itheima/abc.txt
我不仅移动了,我还改名了,这个就是来改名的
5.删除功能
hadoop fs -rm -r [-skipTrash跳过回收站] /home
我删除了这个文件夹
回收站默认关闭,需要修改在core-site.xml里面配置
6.回收站
vim /export/server/hadoop/etc/hadoop/core.site.xml
配置文件ppt有
7.看我自己写的命令node1:9870
有个browse Directory,这个网站只有查询权限,没有修改权限,可以配置
8.hdfs shell其他命令可以看官方文档
9.修改用户所属组
hadoop fs -chown [-R] root:root /xxx.txt
修改权限 hdfs dfs -chowd [-R] 777/xxx.txt(加-R对子目录生效)
我们为什么要修改权限?因为hadoop只有指定的本地用户才能上传,如果我原来用的不是root,就算是root也上传不了,因为强龙压不过地头蛇
10.hdfs fsck path [-files [-blocks [-locations]]]
fsck可以检查指定路径是否正常
-files可以列出路径内的文件状态
-files -blocks 输出文件块报告(有几个块,多少副本)
-files -blocks -locations 输出每一个block的详情
–3.13更新
一键启动YARN集群 start-yarn.sh
至于historyserver(历史服务器) mapred --daemon start|stop historyserver 开启或者停止
单独启动或停止某个进程 yarn
yarn --daemon start|stop resourcemanager|nodemanager|proxyserver
所有这些,只要你,start换成stop就是停止
node1:8088查看yarn
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount hdfs://node1:8020/input/wordcount/ hdfs://node1:8020/output/wc1
怎么使用yarn的mapreduce
1.创建一个vim words.txt
2.上传如下
hadoop fs -mkdir -p /input/wordcount
hadoop fs -mkdir /output
hadoop fs -put words.txt /input/wordcount/
3.
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount hdfs://node1:8020/input/wordcount/ hdfs://node1:8020/output/wc1
hdfs前面的那个wordcount是功能,可以换成其他的比如pi 3000(求圆周率)
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar pi 3 1000 不加hdfs了直接求
执行完成后在output文件里面:
_SUCCESS文件是标记文件,表示运行成功,本身是空文件
part-r-00000,是结果文件,结果存储在以part开头的文件中
3.14
webappproxyserver怎么启动?
先cd到指定文件夹
cd /export/server/hadoop/bin
然后运行./yarn --daemon start proxyserver命令
3.hive来干什么?
将sql翻译成mapreduce语句,提供用户分布式sql计算能力
啊啊啊好崩溃终于配置好了hive
启动语句
1.cd /export/server/hive
2.bin/hive
然后直接写sql语句,这个其实hive的元数据
node1:8088可以看到历史sql语句
这些sql,表全部存储在hadoop fs -ls /user/hive/warehouse 文件夹中
可查看具体表具体内容,例如
hadoop fs -cat /user/hive/warehouse/test/*
方法二启动:bin/hive–service hiveserver2,这个可以靠第三方工具比如datagrip写入
3.18
创建内部表,在apache hive下面,删除表同时删除元数据
元数据在哪里?普通的数据库连接上 hive数据库里面TBLS,有元数据
这个row format delimited fields terminated by ‘\t’;意思是\t分隔符
create table myhive.stu2(id int,name string) row format delimited fields terminated by ‘\t’;
这个图是怎么连接普通数据库dbserve
3.19
1.先存在数据,后创建外部表
hadoop fs -mkdir /tmp/test_ext2
hadoop fs -put test_external.txt /tmp/test_ext2/
create external table test_ext2(id int, name string) row format delimited fields terminated by ‘\t’ location ‘/tmp/test_ext2’;
select * from test_ext2;
2.先创建外部表,然后移动数据
创建外部表:create external table test_ext1(id int, name string) row format delimited fields terminated by ‘\t’ location ‘/tmp/test_ext1’;
可以看到,目录/tmp/test_ext1被创建
select * from test_ext1,空结果,无数据
上传数据: hadoop fs -put test_external.txt /tmp/test_ext1/
select * from test_ext1,即可看到数据结果
外部表是数据和表独立的删除表删除不了数据
3.数据加载
先创建表,然后再dbserve里面写
load data [local] inpath ‘/tmp/search_log.txt’ [overwrite] into table myhive.test_load;
其中,local取决于我们的txt文件是否在tmp里面也就是hdfs里面,overwrite是覆盖写
如果在txt在tmp里面,那么使用hdfs的txt会消失,相当于执行mv
从其他表加载数据