Hadoop基础知识简单整理

一、配置文件

首先应该配置系统的环境变量。在/etc/profile文件操作如下:
export JAVA_HOME=/usr/java/jdk
export HADOOP_HOME=/usr/java/hadoop
export PATH=.:$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH,其中JAVA_HOME和HADOOP_HOME要根据自己的安装路径修改。
之后还要配置hasoop的相关脚本。
在conf/hadoop-env.sh文件中增加: export JAVA_HOME=/home/Java/jdk1.6
  在conf/core-site.xml文件中增加如下内容:
 1、<!--  fs.default.name - 这是一个描述集群中NameNode结点的URI(包括协议、主机名称、端口号),集群里面的每一台机器都需要知道NameNode的地址。DataNode结点会先在NameNode上注册,这样它们的数据才可以被使用。独立的客户端程序通过这个URI跟DataNode交互,以取得文件的块列表。-->
  <property>
              <name>fs.default.name</name>
              <value>hdfs://localhost:9000</value>
  </property>
2、<!—hadoop.tmp.dir 是hadoop文件系统依赖的基础配置,很多路径都依赖它。如果hdfs-site.xml中不配置namenode和datanode的存放位置,默认就放在这个路径中-->
  <property>
      <name>hadoop.tmp.dir</name>
       <value>/home/hdfs/tmp</value>
   </property>
在conf/hdfs-site.xml中增加如下内容:
3、<!-- dfs.replication -它决定着 系统里面的文件块的数据备份个数。对于一个实际的应用,它 应该被设为3(这个数字并没有上限,但更多的备份可能并没有作用,而且会占用更多的空间)。少于三个的备份,可能会影响到数据的可靠性(系统故障时,也许会造成数据丢失)
     <property>
         <name>dfs.replication</name>
         <value>1</value>
     </property>
4、<!--  dfs.data.dir - 这是DataNode结点被指定要存储数据的本地文件系统路径。DataNode结点上 的这个路径没有必要完全相同,因为每台机器的环境很可能是不一样的。但如果每台机器上的这个路径都是统一配置的话,会使工作变得简单一些。默认的情况下,它的值hadoop.tmp.dir, 这个路径只能用于测试的目的,因为,它很可能会丢失掉一些数据。所以,这个值最好还是被覆 盖。 
<!-- dfs.name.dir - 这是NameNode结点存储hadoop文件系统信息的本地系统路径。这个值只对NameNode有效,DataNode并不需要使用到它。上面对于/temp类型的警告,同样也适用于这里。在实际应用中,它最好被覆盖掉。-->
      <property>
             <name>dfs.name.dir</name>
             <value>/home/hdfs/name</value>
      </property>
      <property>
        <name>dfs.data.dir</name>
        <value>/home/hdfs/data</value>
     </property>
5、解决:org.apache.hadoop.security.AccessControlException:Permission denied:user=Administrator,access=WRITE,inode="tmp":root:supergroup:rwxr-xr-x 
因为Eclipse使用hadoop插件提交作业时,会默认以 DrWho 身份去将作业写入hdfs文件系统中,对应的也就是 HDFS 上的/user/hadoop ,  由于 DrWho 用户对hadoop目录并没有写入权限,所以导致异常的发生。解决方法为:放开 hadoop 目录的权限。
命令如下 : $ hadoop fs -chmod 777 /user/hadoop
         <property> 
                   <name>dfs.permissions</name>
                   <value>false</value>
                   <description>
                      If "true", enable permission checking in HDFS. If "false", permission checking is turned  off,   but all other behavior is unchanged                      .Switching from one parameter value to the other does   not change the mode, owner or group of files or directories
                   </description>
        </property>
  在conf/mapred-site.xml中增加如下内容:
6、<!-- mapred.job.tracker -JobTracker的主机(或者IP)和端口。-->
    <property>
          <name>mapred.job.tracker</name>
          <value>localhost:9001</value>
    </property>

二、常用命令

1.  格式化工作空间

进入bin目录,运行 ./hadoop namenode –format

2.  启动hdfs

进入hadoop目录,在bin/下面有很多启动脚本,可以根据自己的需要来启动。
* start-all.sh 启动所有的Hadoop守护。包括namenode, datanode, jobtracker, tasktrack
* stop-all.sh 停止所有的Hadoop
* start-mapred.sh 启动Map/Reduce守护。包括Jobtracker和Tasktrack
* stop-mapred.sh 停止Map/Reduce守护
* start-dfs.sh 启动Hadoop DFS守护Namenode和Datanode
* stop-dfs.sh 停止DFS守护  

3、Hadoop hdfs 整合 

可按如下步骤删除和更改hdfs不需要的文件:
1)将hadoop-core-1.0.0.jar 移动到lib目录下。
2)将ibexec目录下的文件移动到bin目录下。
3) 删除除bin、lib、conf、logs之外的所有目录和文件。
4)如果需要修改日志存储路径,则需要在conf/hadoop-env.sh文件中增加:export    HADOOP_LOG_DIR=/home/xxxx/xxxx即可。

4、HDFS文件操作

Hadoop使用的是HDFS,能够实现的功能和我们使用的磁盘系统类似。并且支持通配符,如*。
1)查看文件列表
查看hdfs中/user/admin/hdfs目录下的文件。
a. 进入HADOOP_HOME目录。
b. 执行sh bin/hadoop fs -ls /user/admin/hdfs
查看hdfs中/user/admin/hdfs目录下的所有文件(包括子目录下的文件)。
a. 进入HADOOP_HOME目录。
b. 执行sh bin/hadoop fs -lsr /user/admin/hdfs
2)创建文件目录
查看hdfs中/user/admin/hdfs目录下再新建一个叫做newDir的新目录。
a. 进入HADOOP_HOME目录。
b. 执行sh bin/hadoop fs -mkdir /user/admin/hdfs/newDir
3) 删除单个文件
删除hdfs中/user/admin/hdfs目录下一个名叫needDelete的文件
a. 进入HADOOP_HOME目录。
b. 执行sh bin/hadoop fs -rm /user/admin/hdfs/needDelete
4)删除hdfs中/user/admin/hdfs目录以及该目录下的所有文件
a. 进入HADOOP_HOME目录。
b. 执行sh bin/hadoop fs -rmr /user/admin/hdfs
5)上传文件
上传一个本机/home/admin/newFile的文件到hdfs中/user/admin/hdfs目录下
a. 进入HADOOP_HOME目录。
b. 执行sh bin/hadoop fs –put /home/admin/newFile /user/admin/hdfs/
6)下载文件
下载hdfs中/user/admin/hdfs目录下的newFile文件到本机/home/admin/newFile中
a. 进入HADOOP_HOME目录。
b. 执行sh bin/hadoop fs –get /user/admin/hdfs/newFile /home/admin/newFile
7)查看文件内容
查看hdfs中/user/admin/hdfs目录下的newFile文件
a. 进入HADOOP_HOME目录。
b. 执行sh bin/hadoop fs –cat /home/admin/newFile
另外,dfs同样可以进行你个文件操作。
 * 查看目录文件
 * $ hadoop dfs -ls /user/cl
 * 创建文件目录
 * $ hadoop dfs -mkdir /user/cl/temp
 * 删除文件
 * $ hadoop dfs -rm /user/cl/temp/a.txt
 * 删除目录与目录下所有文件
 * $ hadoop dfs -rmr /user/cl/temp
 * 上传文件
 * 上传一个本机/home/cl/local.txt到hdfs中/user/cl/temp目录下
 * $ hadoop dfs -put /home/cl/local.txt /user/cl/temp
 * 下载文件
 * 下载hdfs中/user/cl/temp目录下的hdfs.txt文件到本机/home/cl/中
 * $ hadoop dfs -get /user/cl/temp/hdfs.txt /home/cl
 * 查看文件
 * $ hadoop dfs –cat /home/cl/hdfs.txt

5、Job操作

1)提交MapReduce Job。Hadoop所有的MapReduce Job都是一个jar包
 * $ hadoop jar <local-jar-file> <java-class> <hdfs-input-file> <hdfs-output-dir>
 * $ hadoop jar sandbox-mapred-0.0.20.jar sandbox.mapred.WordCountJob /user/cl/input.dat /user/cl/outputdir
2)杀死某个正在运行的Job
 * 假设Job_Id为:job_201207121738_0001
 * $ hadoop job -kill job_201207121738_0001

三、解除safemode

在分布式文件系统启动的时候会有安全模式。在于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。运行期通过命令也可以进入安全模式。在实践过程中,系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。 
安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。

1、使用下面的命令离开安全模式:

bin/hadoop dfsadmin -safemode leave 
NameNode在启动的时候首先进入安全模式。如果datanode丢失的block达到一定的比例(由dfs.safemode.threshold.pct设置,缺省值0.999f),则系统会一直处于安全模式状态。dfs.safemode.threshold.pct表示:HDFS启动的时候,如果DataNode上报的block个数达到了元数据记录的block个数的0.999倍才可以离开安全模式,否则一直是这种只读模式。如果设为1则HDFS永远是处于SafeMode。
下面这行摘录自NameNode启动时的日志(block上报比例1达到了阀值0.9990)
The ratio of reported blocks 1.0000 has reached the threshold 0.9990. Safe mode will be turned off automatically in 18 seconds.
hadoop dfsadmin -safemode leave

2、与安全模式有关的其他命令

/bin/hadoop dfsadmin -safemode value
其中参数value的说明如下:
enter - 进入安全模式
leave - 强制NameNode离开安全模式
get -   返回安全模式是否开启的信息
wait - 等待,一直到安全模式结束。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值