Hadoop的配置文件设置(非HDFS HA)
Hadoop 2.7.4 + HBase 1.2.6 + ZooKeeper 3.4.10 配置
本文为上述配置的一部分,为方便阅读,故设为独立页面
在linux中,通过下面命令hadoop
curl -O https://archive.apache.org/dist/hadoop/common/hadoop-2.7.4/hadoop-2.7.4.tar.gz
先将hadoop包解压到目录 : /home/mytestzk/hadoop-2.7.4
在hadoop目录下创建以下子目录:
mkdir tmp mkdir hdfs mkdir hdfs/name mkdir hdfs/data
1:配置
hadoop 2.x的最大进步在于,引入了yarn,在这个系统中,mapreduce成为了它的一个组件,并且是可替换的组件,比如可以使用spark,所以配置的过程中,需要注意yarn的相关配置文件的使用,具体共有7个配置文件:
- hadoop-env.sh
该文件是hadoop运行基本环境的配置,需要修改的为java虚拟机的位置。
故在该文件中修改JAVA_HOME值为本机JDK安装位置,在hadoop2.7.4 中,改为 export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_151
- yarn-env.sh
该文件是yarn框架运行环境的配置,同样需要修改java虚拟机的位置。
在该文件中修改JAVA_HOME值为本机安装位置,在hadoop2.7.4 中,可以看到已经有如下配置:
- slaves
该文件里面保存所有slave节点的信息,我这里写的是ip (说明:slaves文件中可以写ip地址,也可以写成/etc/hosts里从机的主机名,任选一种即可)
slave1 slave2
- core-site.xml
可参见帮助:http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/core-default.xml
这个是hadoop的核心配置文件,这里需要配置的主要两个属性,
fs.defaultFS配置了hadoop的HDFS系统的命名,位置为主机namenode的9000端口;
hadoop.tmp.dir配置了hadoop的tmp目录的根位置。需要新建一个tmp目录
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/mytestzk/hadoop-2.7.4/tmp</value> </property> </configuration>
- hdfs-site.xml
可参见帮助:http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml
这个是hdfs的配置文件,dfs.namenode.name.dir配置namenode数据存放位置,dfs.datanode.data.dir配置datanode数据存放位置,
dfs.replication配置了文件块的副本数,一般不大于从机的个数。
<configuration> <property> <name>dfs.namenode.name.dir</name> <value>file:/home/mytestzk/hadoop-2.7.4/hdfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/home/mytestzk/hadoop-2.7.4/hdfs/data</value> </property> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>master:9001</value> </property> </configuration>
- mapred-site.xml
这个是mapreduce任务的配置,由于hadoop2.x使用了yarn框架,所以要实现分布式部署,必须在mapreduce.framework.name属性下配置为yarn。mapred.map.tasks和mapred.reduce.tasks分别为map和reduce的任务数,至于什么是map和reduce,可参考其它资料进行了解。
其它属性为一些进程的端口配置,均配在主机下。
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
- yarn-site.xml
可参见帮助:http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-common/yarn-default.xml
该文件为yarn框架的配置,主要是一些任务的启动位置
<configuration> <!-- Site specific YARN configuration properties --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:8031</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>master:8032</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master:8088</value> </property> </configuration>
2:启动:
格式化(在master上执行):bin/hdfs namenode -format
启动HDFS(在master上执行):sbin/start-dfs.sh
3:检查启动结果:
查看集群状态:hdfs dfsadmin –report
查看文件块:hdfsfsck / -files -blocks
查看hdfs:http://master:50070(主机IP)
查看MapReduce:http://master:8088(主机IP)
运行jps查看进程:
HDFS |
NameNode |
DataNode |
|
SecondaryNameNode |
|
YARN |
ResourceManager |
NodeManager |
4:测试:
创建linux 文件目录: mkdir ~/hadoopinputfile
创建hadoop hdfs input目录:
bin/hadoop fs -mkdir /input
查看hdfs :
bin/hadoop fs -ls /
bin/hadoop fs -ls /input
上传文件到hdfs input目录:
bin/hadoop fs -put ~/hadoopinputfile/* /input
查看hdfs输出文件内容
bin/hadoop fs -cat /output/part-r-00000
运行hadoop自带的wordcount:
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-example-2.7.4.jar wordcount /input /output
常用hdfs命令:
查看当前目录信息 hdfs dfs -ls /input
上传文件 hdfs dfs -put /本地路径 /hdfs路径
下载文件到本地 hdfs dfs -get /hdfs路径 /本地路径
创建文件夹 hdfs dfs -mkdir /input
创建多级文件夹 hdfs dfs -mkdir -p /input/temp
移动hdfs文件 hdfs dfs -mv /hdfs路径 /hdfs路径
复制hdfs文件 hdfs dfs -cp /hdfs路径 /hdfs路径
删除hdfs文件 hdfs dfs -rm /test.txt
删除hdfs文件夹 hdfs dfs -rm -r /input
查看hdfs中的文件
hdfs dfs -cat /文件
hdfs dfs -tail -f /文件
查看文件夹中有多少个文件 hdfs dfs -count /文件夹
查看hdfs的总空间 hdfs dfs -df /
修改副本数 hdfs dfs -setrep 1 /temp.txt
如果在上传文件到hdfs时遇到权限问题,很有可能与hdfs文件夹的用户组有关系,可以用下面命令来修改hdfs 文件夹的权限和owner
修改hdfs的权限 sudo hdfs dfs -chmod -R 755 /input 修改hdfs文件的所有者 sudo hdfs dfs -chown -R {user} /input
修改文件所属组 hadoop fs -chgrp [-R] {group} /input