Hadoop使用笔记
1. Hadoop主要目录:
各组件配置文件路径:/usr/local/hadoop-3.0.3/etc/hadoop
各组件启动/关闭目录:/usr/local/hadoop-3.0.3/sbin
2. Hadoop3的集群配置文件从slaves变成workers了,被坑了好久啊ToT
3. 能打开8088端口,但是打不开50070等
(1)看下端口是否已占用:
netstat -anp|grep 50070
(2)修改hadoop的配置文件:
cd /usr/local/hadoop-3.0.3/etc/hadoop
vi mapred-site.xml
添加:
<property>
<name>mapred.job.tracker.http.address</name>
<value>hadoop1:50030</value>
</property>
<property>
<name>mapred.task.tracker.http.address</name>
<value>hadoop1:50060</value>
</property>
vi hdfs-site.xml
添加:
<property>
<name>dfs.http.address</name>
<value>hadoop1:50070</value>
</property>
4. Hadoop主要端口:
组件 | 节点 | 默认端口 | 配置 | 用途说明 |
HDFS | DataNode | 50010 | dfs.datanode.address | datanode服务端口,用于数据传输 |
HDFS | DataNode | 50075 | dfs.datanode.http.address | http服务的端口 |
HDFS | DataNode | 50475 | dfs.datanode.https.address | https服务的端口 |
HDFS | DataNode | 50020 | dfs.datanode.ipc.address | ipc服务的端口 |
HDFS | NameNode | 50070 | dfs.namenode.http-address | http服务的端口 |
HDFS | NameNode | 50470 | dfs.namenode.https-address | https服务的端口 |
HDFS | NameNode | 8020 | fs.defaultFS | 接收Client连接的RPC端口,用于获取文件系统metadata信息。 |
HDFS | journalnode | 8485 | dfs.journalnode.rpc-address | RPC服务 |
HDFS | journalnode | 8480 | dfs.journalnode.http-address | HTTP服务 |
HDFS | ZKFC | 8019 | dfs.ha.zkfc.port | ZooKeeper FailoverController,用于NN HA |
YARN | ResourceManager | 8032 | yarn.resourcemanager.address | RM的applications manager(ASM)端口 |
YARN | ResourceManager | 8030 | yarn.resourcemanager.scheduler.address | scheduler组件的IPC端口 |
YARN | ResourceManager | 8031 | yarn.resourcemanager.resource-tracker.address | IPC |
YARN | ResourceManager | 8033 | yarn.resourcemanager.admin.address | IPC |
YARN | ResourceManager | 8088 | yarn.resourcemanager.webapp.address | http服务端口 |
YARN | NodeManager | 8040 | yarn.nodemanager.localizer.address | localizer IPC |
YARN | NodeManager | 8042 | yarn.nodemanager.webapp.address | http服务端口 |
YARN | NodeManager | 8041 | yarn.nodemanager.address | NM中container manager的端口 |
YARN | JobHistory Server | 10020 | mapreduce.jobhistory.address | IPC |
YARN | JobHistory Server | 19888 | mapreduce.jobhistory.webapp.address | http服务端口 |
HBase | Master | 60000 | hbase.master.port | IPC |
HBase | Master | 60010 | hbase.master.info.port | http服务端口 |
HBase | RegionServer | 60020 | hbase.regionserver.port | IPC |
HBase | RegionServer | 60030 | hbase.regionserver.info.port | http服务端口 |
HBase | HQuorumPeer | 2181 | hbase.zookeeper.property.clientPort | HBase-managed ZK mode,使用独立的ZooKeeper集群则不会启用该端口。 |
HBase | HQuorumPeer | 2888 | hbase.zookeeper.peerport | HBase-managed ZK mode,使用独立的ZooKeeper集群则不会启用该端口。 |
HBase | HQuorumPeer | 3888 | hbase.zookeeper.leaderport | HBase-managed ZK mode,使用独立的ZooKeeper集群则不会启用该端口。 |
Hive | Metastore | 9083 | /etc/default/hive-metastore中export PORT=<port>来更新默认端口 | |
Hive | HiveServer | 10000 | /etc/hive/conf/hive-env.sh中export HIVE_SERVER2_THRIFT_PORT=<port>来更新默认端口 | |
ZooKeeper | Server | 2181 | /etc/zookeeper/conf/zoo.cfg中clientPort=<port> | 对客户端提供服务的端口 |
ZooKeeper | Server | 2888 | /etc/zookeeper/conf/zoo.cfg中server.x=[hostname]:nnnnn[:nnnnn],标蓝部分 | follower用来连接到leader,只在leader上监听该端口。 |
ZooKeeper | Server | 3888 | /etc/zookeeper/conf/zoo.cfg中server.x=[hostname]:nnnnn[:nnnnn],标蓝部分 | 用于leader选举的。只在electionAlg是1,2或3(默认)时需要。 |
hadoop3.0修改端口如下:
Namenode 端口:
50470 --> 9871 |
50070 --> 9870 |
8020 --> 9820 |
Secondary NN 端口:
50091 --> 9869 |
50090 --> 9868 |
Datanode 端口:
50020 --> 9867 |
50010 --> 9866 |
50475 --> 9865 |
50075 --> 9864 |
5. 外网访问Hadoop:
使用命令:
netstat -ant
查看本地开放的端口,显示的是:
127.0.0.1 50070
默认的绑定IP就是在127.0.0.1上。于是,修改默认参数:
在hdfs-site.xml中,更改开放端口的绑定IP:
<property>
<name>dfs.http.address</name>
<value>0.0.0.0:50070</value>
</property>
将绑定IP改为0.0.0.0,而不是本地回环IP,这样,就能够实现外网访问本机的50070端口了。
开放端口:
1. 开放端口命令:
iptables -I INPUT -p tcp --dport 50070 -j ACCEPT
2.保存:
iptables save
3.重启服务:
iptables restart
4.查看端口是否开放:
iptables -L -n
centos6的iptables是这样的:
/etc/init.d/iptables save
6.上传后的文件查看:
在Hadoop中上传的文件和目录在linux下是看不到的,因为它是对应Hadoop系统的目录,不是对应linux系统的目录了
① 通过web页面查看
打开http://hadoop:50070
Utiltiles->Browser the file system
② 在linux的hadoop安装目录下查看
cd /usr/local/hadoop-2.9.1
cd bin
./hadoop fs -ls /
【最后的/代表根目录开始查找,也可以指定目录】
7. 出现File XXX could only be replicated to 0 nodes instead of minReplication (=1).
There are 2 datanode(s) running and 2 node(s) are excluded in this operation.错误的解决方法
我采用的是分布式集群,使用hadoop dfsadmin -report命令查看集群状态,没有问题。
后来想起来是不是没有datanode服务器的防火墙,执行以下命令,把所有机器的防火墙都关了,果然成功上传。
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
8.删除指定目录下的所有文件:
hadoop fs -rm -r -skipTrash /agentlog/*
9. Flume启动:
flume-ng agent --name flume-log-agent --conf $FLUME_HOME/conf --conf-file $FLUME_HOME/conf/flume-log-agent.conf -Dflume.root.logger=INFO,console
10.MapReduce:
执行:
hadoop jar /home/hadoop/Downloads/hadoop-MapReduce-1.0-SNAPSHOT.jar org.apache.hadoop.examples.wordcount /agentlog/ /user/sun/MapReduce/wordCountX
查看结果:
hadoop fs -cat /user/sun/MapReduce/wordCount3/part-r-00000
11.ZooKeeper启动:
[[email protected] zookeeper]$ bin/zkServer.sh start ./conf/zoo.cfg
查看:
zkServer.sh status conf/zoo.cfg
如果查看Status发觉启动有问题,则关闭各节点的防火墙:
systemctl stop firewalld.service
12. Hbase启动:
start-hbase.sh
hbase shell
13. Java连接Hbase时报错:
INFO org.apache.zookeeper.ClientCnxn: Opening socket connection to server nametestnode/192.168.31.92:2181. Will not attempt to authenticate using SASL (unknown error)
WARN org.apache.zookeeper.ClientCnxn: Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect
java.net.ConnectException: refused
解决:用了ntpdate 把各服务器时间调整一致
yum install ntpdate -y
ntpdate 0.asia.pool.ntp.org
hwclock --systohc
查看时间:
date
14. Flume的进程管理:
设为后台进程(不受ssh远程客户端关闭影响):
setsid flume-ng agent --name flume-log-agent --conf $FLUME_HOME/conf --conf-file $FLUME_HOME/conf/flume-log-agent.conf -Dflume.root.logger=INFO,console
查看flume进程:
ps -ef |grep flume
删除进程:
kill 进程id
删除端口进程:
lsof -i :44444|grep -v "PID"|awk '{print "kill -9",$2}'|sh
下一篇: 车联网:腾讯力量不可忽视