- Hadoop集群安装部署:
- 下载hadoop-3.1.0.tar.gz解压
- 修改配置文件参考: https://blog.youkuaiyun.com/ViMan1204/article/details/88980813
- kms-env.sh:
export JAVA_HOME=/usr/local/sbin/jdk1.8.0_241/
- core-site.xml:
<property>
<name>fs.defaultFS</name><value>hdfs://192.168.25.129:9000/</value>
</property>
<property>
<name>hadoop.tmp.dir</name><value>/usr/local/sbin/hadoop-3.1.0/tmp/</value>
</property>
- hdfs-site.xml:
<property>
<name>dfs.replication</name><value>1</value>
</property>
- mapred-site.xml
<property>
<name>mapreduce.framework.name</name><value>yarn</value>
</property>
<property>
<name>mapreduce.application.classpath</name>
<value>/usr/local/sbin/hadoop-3.1.0/share/hadoop/mapreduce/*, /usr/local/sbin/hadoop-3.1.0/share/hadoop/mapreduce/lib/*</value>
</property>
- yarn-site.xml
<name>yarn.resourcemanager.hostname</name><value>hadoop-server-00</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value>
</property>
- works(老版本的slaves)
- Hadoop启动和关闭(手动):
- dfs格式化
./bin/hadoop namenode -format
- 启动 namenode 进程-- ./sbin/hadoop-daemon.sh start namenode
- 启动 datanode 进程-- ./sbin/hadoop-daemon.sh start datanode
- 启动secondarynamenode进程-- ./sbin/hadoop-daemon.sh start secondarynamenode
- 启动 yarn resource进程-- ./sbin/yarn-daemon.sh start resourcemanager
- 启动 yarn node进程-- ./sbin/yarn-daemon.sh start nodemanager
- 查看进程-- .jps
- 查看端口进程-- netstat -nltp
图形界面:http://192.168.25.129:9870
- Hadoop启动和关闭(自动):未测试。
- Hdfs启动-- ./sbin/start-dfs.sh
- Hdfs 关闭-- ./sbin/stop-dfs.sh
- Yarn启动 --./sbin/start-yarn.sh
- Yarn关闭 --./sbin/stop-yarn.sh
- 如果报错,请添加以下代码
===================
在/hadoop/sbin路径下:
将start-dfs.sh,stop-dfs.sh两个文件顶部添加以下参数
#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
还有,start-yarn.sh,stop-yarn.sh顶部也需添加以下:
#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
修改后重启 ./start-dfs.sh,成功!
原文链接:https://blog.youkuaiyun.com/lglglgl/article/details/80553828
- 免密登录设置
- hdfs说明
- hdfs原理图
- hdfs命令
1. 查看hdfs根目录下的文件:./bin/hadoop fs -ls hdfs://master:9000/
可以简写为以下的形式:./bin/hadoop fs -ls /
或者这么写:./bin/hdfs dfs -ls /
2. 创建文件夹:./bin/hadoop fs -mkdir /test
3. 在指定文件夹中创建空文件:./bin/hadoop fs -touchz /test/zs.txt
文件为空时 再创建一个同名的文件不会报错
4. 上传本地文件到HDFS(将Linux系统下当前目录下的a.php文件上传到根目录下):./bin/hadoop fs -put ./a.php /test
文件存在时 如果再上传相同的文件 就会报错
选项-f:如果文件存在 则再上传相同的文件直接覆盖之前的文件
5. 显示文件内容:./bin/hadoop fs -cat /test/a.php
6. 从hdfs下载文件到本地:./bin/hadoop fs -get /test/a.php
没有覆盖本地文件的选项 如果本地存在相同文件 则会报错
7. 将本地文件移动到hdfs中(与put功能类似 不同之处在于 moveFromLocal会删除本地的文件 而put则不会)
./bin/hadoop fs -moveFromLocal ./b.php /test
8. 将hdfs中的文件移动到本地(moveToLocal与get功能类似 不同之处在于 moveToLocal会删除hdfs中的文件 而get则不会)
9. 将本地文件拷贝到hdfs中(copyFromLocal与put功能相同):./bin/hadoop fs -copyFromLocal ./c.php /test
10. 将hdfs中的文件拷贝到到本地(copyToLocal与get功能相同)
11. 将本地的文件追加到hdfs中已经存在的文件末尾:hdfs fs -appendToFile ./test.php /test/a.php
12. 查看文件末尾:./bin/hadoop fs -tail /test/a.php
13. 以字符形式显示文件内容:./bin/hadoop fs -text /test/a.php(功能类似于cat 区别在于如果不是字符文件 则会显示乱码)
14. 修改文件权限:./bin/hadoop fs -chmod 777 /test/a.php
15. 修改文件用户和组:./bin/hadoop fs -chown 777 /test/a.php(./bin/hadoop没有用户的概念 它是一种弱的权限控制 并不会检验用户是否存在 即使该用户和组不存在也可以设置成功 你指定它的用户和组是谁就是谁)
16. 将文件从hdfs的一个路径拷贝到另外一个路径:./bin/hadoop fs -cp /test/a.php /
拷贝相同的文件到同一个目录中会报错
-f参数会直接忽视错误 不管文件是否存在 强行将文件拷贝过去
17. 将文件从hdfs的一个路径拷贝到另外一个路径:./bin/hadoop fs -mv /test/c.php /
18. 将多个文件从hdfs上合并下载到本地:./bin/hadoop fs -getmerge /test/*.php ./merge.php
这是hadoop的bug 参数中有*时 它会在本地查找 而不是在hdfs中查找 要想避免这种问题 就要把地址写全
19. 删除文件:./bin/hadoop fs -rm /test/a.php
-r参数表示递归删除某个目录下的所有文件和子目录:./bin/hadoop fs -rm -r /test
20. 删除空目录:./bin/hadoop fs -rmdir /test/a.php(这个命令无法删除非空目录)
21. 统计文件系统的可用空间信息:./bin/hadoop fs -df
./bin/hadoop fs -df -h /
22. 统计文件及目录的大小信息:./bin/hadoop -fs du /
-s 参数表示显示大小信息 -h参数表示带单位:./bin/hadoop -fs du -s -h /
23. 统计一个指定目录下的文件节点数目:./bin/hadoop fs -count /
24. 设置hdfs中文件副本数目:./bin/hadoop fs -setrep 2 /a.php(文件夹只是一种描述文件的特殊文件 是文件系统的元数据 它本身并不存储数据 因此在hdfs中副本数为0)
a.php文件 在设置之前的副本数为3
a.php文件 在设置之后的副本数为2
- Hadoop的rpc
- mapreduce介绍说明
- mapreduce运行机制
- mapreduce数据流向
- mapreduce代码实现(map和reduce实现)
- mapreduce代码实现(job实现)
- 打成jar 上传到主服务器并执行jar.
./bin/hadoop jar wordcount.jar com.bigdata.wordcount.WordCountJobSubmitter
- 代码实例-统计手机号码流量
- 分析HTTP_TEST.data里面的数据,根据手机号码统计流量。
- 注意FlowBean 里面的序列两个方法。Write和readFields
- 代码实例-省份统计手机号码流量。
- Shuffle机制详解。
- YARN 工作机制
- Mapreduce并发和切片。
注意:如果处理的数据是大量小文件,使用默认的切片机制,会导致大量切片,从而maptask进程特别多,每个切片很小,每个maptask处理数据量很小,整体效率很低。
通用解决方案:将多个小文件划分成一个切片:实现办法自定义一个inputformat.
- Mapreduceb编程练习之【共同好友】
- Mapreduceb编程练习之【join连表查询_reduce端】
思想:
- Mapreduceb编程练习之【join连表查询_map端】
思想:利用caceFile 方法把小表的数据分布缓存起来。Map端能够拿到缓存中的数。
- Zookeeper简介。
- Mapreduceb编程练习之【倒排序】
- Mapreduceb编程练习之【多job提交】
- Zookeeper功能
- 环境搭建
- 功能图:
- 命令行
./bin/zkServer.sh start
ZooKeeper -server host:port cmd args
stat path [watch]
set path data [version]
ls path [watch]
delquota [-n|-b] path
ls2 path [watch]
setAcl path acl
setquota -n|-b val path
history
redo cmdno
printwatches on|off
delete path [version]
sync path
listquota path
get path [watch]
create [-s] [-e] path data acl
addauth scheme auth
quit
getAcl path
close
connect host:port
- Zookeeper服务器列表。
- 【注册服务】创建一个节点,create.不要关闭 close.
- 【监听服务】创建一个client,用wath监听。
- Zookeeper分布式锁。
- Hadoop-ha机制:
- Hbase数据库:
- 配置文件
- 配置hbase-env.sh
export JAVA_HOME=/usr/local/sbin/jdk1.8.0_241 #Java安装路径
export HBASE_MANAGES_ZK=false #由HBase负责启动和关闭Zookeeper
- 配置hbase-site.xml
<property>
<name>hbase.rootdir</name>
<value>hdfs://hadoop-server-00:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop-server-00:2181,hadoop-server-01:2181,hadoop-server-02:2181</value>
</property>
- 配置文件conf/regionservers
hadoop-server-00
hadoop-server-01
hadoop-server-02
- 复制文件,分发到其他机器。
cp /usr/local/sbin/hadoop-3.1.0/etc/hadoop/core-site.xml ./
cp /usr/local/sbin/hadoop-3.1.0/etc/hadoop/hdfs-site.xml ./
scp -r ./hbase-1.5.0 hadoop-server-01:/usr/local/sbin/
scp -r ./hbase-1.5.0 hadoop-server-02:/usr/local/sbin/
- 启动服务
./bin/start-hbase.sh
./bin/stop-hbase.sh
- 常用命令
进入终端:./bin/hbase shell
创建创建表
create 'user','username','mobile'
创建表
create 'table_person', {NAME => 'base_info', VERSIONS => 1}, {NAME => 'extend_info', VERSIONS => 1}, {NAME => 'other_info', VERSIONS => 1}
查询和插入:
get 'table_person','rk02'
put 'table_person','rk02','base_info:age',18
put 'table_person','rk02','base_info:name','zhangsan'
命名空间:
create_namespace 'ns01'
create 'ns01:table_person' , {NAME => 'base_info', VERSIONS => 1}, {NAME => 'extend_info', VERSIONS => 1}, {NAME => 'other_info', VERSIONS => 1}
图形界面:http://192.168.25.130:16010/master-status
- get和scan的区别
hbase的查询实现只提供两种方式:
- 按指定rowkey获取唯一一条记录:get方法。
- 按指定条件获取一批记录:scan方法。
实现条件查询功能使用的就是scan方式,scan在使用时有以下几点值的注意:
scan可以通过setCaching与setBatch方法提高速度(以空间换时间)
scan可以通过setStartRow与setEndRow来限定范围。范围越小,性能越高。
scan可以通过setFilter方法添加过滤器,这也是分页(性能差)、多条件查询的基础。
- Hive使用
- 机制介绍
- 环境配置。
环境配置
1.复制hive-env.sh
cp hive-env.sh.template hive-env.sh
2.修改 hive-env.sh
export HADOOP_HOME=/usr/local/sbin/hadoop-3.1.0
3.从Hive2.1起,必须先用schematool进行一次初始化,比如使用内嵌的derby数据库进行初始化。
./bin/schematool -dbType derby -initSchema
Hive installation issues: Hive metastore database is not initialized如果碰到这种报错,可以参考RJ Code的回答。
https://stackoverflow.com/questions/35655306/hive-installation-issues-hive-metastore-database-is-not-initialized
- 常用命令使用。
- 创建表:create table t_order (id int ,product_id string,number int, amount double) row format delimited fields terminated by ','
- 上传数据(hfsf方式):./bin/hadoop fs -put ./t_order_data1 /user/hive/warehouse/t_order
- 上传数据(hive方式):
load data local inpath '/usr/local/sbin/hadoop-3.1.0/t_order_data2' into table t_order
- sqoop使用
- 使用场景。
- 数据库中的数据导入HDFS(支持where)
sqoop import …
- 数据库数据导入hive.
- storm实时流式计算
- 环境配置
- 修改配置文件:storm.yaml
- Storm启动
storm nimbus &
storm ui &
storm supervisor &
storm logviewer &
- 访问路径:
http://192.168.25.130:8080/index.html
- 工作机制。
- 实例代码
- 代码 (mapreduce和strom)