天天看点

hadoop安装

主机

10.201.142.135 master

10.201.142.136 slave1

10.201.142.134 slave2

1在三台机器上分别常见账号 hadoop 之后我们所有的操作都用这个账号操作.生成目录

[hadoop@master ]$ pwd

/home/hadoop/

2  统一hosts文件  并修改每个主机的主机名

cat /etc/hosts

192.168.142.135 master    master

192.168.142.136 slave1    slave1

192.168.142.134 slave2    slave2

3  安装jdk

网上下载jdk解压缩之后 放到/home/hadoop/下

然后在/etc/profile修改文件。在文章最后添加

export JAVA_HOME=/usr/java/jdk1.7.0_09

export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin

4 slva1 slav2 拷贝slave的密钥

4.1 生成master的密钥 在hadoop用户模式下执行ssh-keygen  -t dsa   一直回车默认即可   (这一步在slave1 slave2也要执行)

    scp /home/hadoop/.ssh/id_dsa.pub  [email protected]:/home/hadoop/.ssh/authorized_keys

    scp /home/hadoop/.ssh/id_dsa.pub  [email protected]:/home/hadoop/.ssh/authorized_keys

    这样以后master在两个slave之间拷贝就不用输入密码了

5  下载hadoop包http://hadoop.apache.org/

    放到/home/hadoop解压缩

 修改配置文件

 5.1 vi  hadoop-env.sh

 修改JDK的路径 export JAVA_HOME=/home/hadoop/jdk1.7.0_03

6 修改四个主配置文件   core-site.xml    hdfs-site.xml   mapred-site.xml  hadoop-env.sh

6.1  [hadoop@master conf]$ cat core-site.xml  

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>

        <property>

                <name>fs.default.name</name> 

                <value>hdfs://192.168.142.135:9000</value>               #端口

        </property>

                <name>hadoop.tmp.dir</name>

                <value>/home/hadoop/var/</value>                        #路径

</configuration>

6.2  [hadoop@master conf]$ cat  hdfs-site.xml 

                <name>dfs.replication</name> 

                <value>3</value>

                <name>dfs.name.dir</name>

                <value>/home/hadoop/hadoop/dfs_name</value>

                <name>dfs.data.dir</name>

                <value>/home/hadoop/hadoop/dfs_data</value>

6.3 [hadoop@master conf]$cat mapred-site.xml 

                <name>mapred.job.tracker</name> 

                <value>hdfs://192.168.142.135:9001</value>

         <property>

                <name>mapred.system.dir</name>

                <value>/home/hadoop/hadoop/mapred_system</value>

         </property>

                <name>mapred.locl.dir</name>

                <value>/home/hadoop/hadoop/mapred_local</value>

6.4   hadoop-env.sh 增加java路径和hadoop路径

# The java implementation to use.  Required.

 export JAVA_HOME=/usr/java/jdk1.7.0_09

# Extra Java CLASSPATH elements.  Optional.

 export HADOOP_CLASSPATH=/home/hadoop/hadoop

7 修改主从配置文件

vi  master 

 master 

vi slave

 slave1

 slave2

8 把这个hadoop整个文件分贝考到slav1 slav2

9 启动

 hadoopbin/hadoop namenode -format

 bin/start-all.sh 

10 检测  

在master端            

[hadoop@master conf]$ /usr/java/jdk1.7.0_09/bin/jps 

4350 Jps

4147 JobTracker

4063 SecondaryNameNode

3890 NameNode

在slave端

[hadoop@slave1 root]$ /usr/java/jdk1.7.0_09/bin/jps 

1754 TaskTracker

1654 DataNode

1843 Jps

7. HDFS常用操作 

hadoopdfs -ls 列出HDFS下的文件

hadoop dfs -ls in 列出HDFS下某个文档中的文件

hadoop dfs -put test1.txt test 上传文件到指定目录并且重新命名,只有所有的DataNode都接收完数据才算成功

hadoop dfs -get in getin 从HDFS获取文件并且重新命名为getin,同put一样可操作文件也可操作目录

hadoop dfs -rmr out 删除指定文件从HDFS上

hadoop dfs -cat in/* 查看HDFS上in目录的内容

hadoop dfsadmin -report 查看HDFS的基本统计信息,结果如下

hadoop dfsadmin -safemode leave 退出安全模式

hadoop dfsadmin -safemode enter 进入安全模式

实例

运行bin/目录的hadoop命令,可以查看Haoop所有支持的操作及其用法,这里以几个简单的操作为例。

建立目录

[dbrg@dbrg-1:hadoop]$bin/hadoop  dfs  -mkdir  testdir

在HDFS中建立一个名为testdir的目录

复制文件

[dbrg@dbrg-1:hadoop]$bin/hadoop  dfs  -put  /home/dbrg/large.zip  testfile.zip

把本地文件large.zip拷贝到HDFS的根目录/user/dbrg/下,文件名为testfile.zip

查看现有文件

[dbrg@dbrg-1:hadoop]$bin/hadoop  dfs  -ls

运行发行版提供的示例程序:

$ bin/hadoop jar hadoop-0.20.2-examples.jar grep input output 'dfs[a-z.]+'

2.补充

Q: bin/hadoop jar hadoop-0.20.2-examples.jar grep input output 'dfs[a-z.]+' 什么意思啊?

A: bin/hadoop jar(使用hadoop运行jar包) hadoop-0.20.2_examples.jar(jar包的名字) grep (要使用的类,后边的是参数)input output 'dfs[a-z.]+'

整个就是运行hadoop示例程序中的grep,对应的hdfs上的输入目录为input、输出目录为output。 

Q: 什么是grep?

A: A map/reduce program that counts the matches of a regex in the input.

查看输出文件:

将输出文件从分布式文件系统拷贝到本地文件系统查看:

$ bin/hadoop fs -get output output 

$ cat output/*

或者

在分布式文件系统上查看输出文件:

$ bin/hadoop fs -cat output/*

统计结果:

root@v-jiwan-ubuntu-0:~/hadoop/hadoop-0.20.2-bak/hadoop-0.20.2#bin/hadoop fs -cat output/part-00000

3       dfs.class

2       dfs.period

1       dfs.file

1      dfs.replication

1       dfs.servers

1       dfsadmin

继续阅读