您的位置:首页 > 运维架构 > Linux

Linux系统下Hadoop环境的搭建

2016-01-19 17:32 561 查看

                                                         Linux系统下Hadoop环境的搭建 

必备基础知识:
 1、JAVA语言的基本知识
 2、熟悉基本的Linux的指令操作

主要有两大步骤:
    一、安装配置JDK 
          可以以前我写过的一篇文章:静态jdk配置安装
          1、下载安装jdk
           2、设置jdk环境变量    (vim /etc/profile)

     
      用javac -version验证是否正确安装。出现版本信息说明安装正确!
           
       因为,我是在centos下安装配置的所以啰嗦一句。其实用openjdk就行了。两条语句就解决了,如果不行或者              没网的情况下才选择静态jdk。在terminal里输入search openjdk 就会出现各种jdk版本,选择适合你的一款。安装        openjdk(jdk Enviroment) 和openjdk-devel两个文件就好了。yum install ******。
    二、安装配置Hadoop
          1、下载安装hadoop
          2、配置文件       (vim /etc/profile )  ----export
HADOOP=/opt/hadoop-1.2.1 ------PAHT=........ :/HADOOP/bin

            

            1)在conf/hadoop-env.sh文件中增加:export JAVA_HOME=/usr/lib/jvm/java
(默认的Openjdk安装路径。你如果不是默认的就别犯二!)
            2) 在conf/core-site.xml文件中增加如下内容:
                   

<!--  fs.default.name - 这是一个描述集群中NameNode结点的URI(包括协议、主机名称、端口号),集群里面的每一台机器都需要知道NameNode的地址。DataNode结点会先在NameNode上注册,这样它们的数据才可以被使用。独立的客户端程序通过这个URI跟DataNode交互,以取得文件的块列表。-->

<property>

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

<value>hdfs://localhost:9000</value>

</property>

<!—hadoop.tmp.dir 是hadoop文件系统依赖的基础配置,很多路径都依赖它。如果hdfs-site.xml中不配                     置namenode和datanode的存放位置,默认就放在这个路径中-->

<property>

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

<value>/home/hdfs/tmp</value>

</property>

         3)在conf/hdfs-site.xml中增加如下内容:
             

<!-- dfs.replication -它决定着 系统里面的文件块的数据备份个数。对于一个实际的应用,它 应该被设为3(这个           数字并没有上限,但更多的备份可能并没有作用,而且会占用更多的空间)。少于三个的备份,可能会影响到数据的         可靠性(系统故障时,也许会造成数据丢失)-->

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

<!--  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>

<!—解决: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>

              4)在conf/mapred-site.xml中增加如下内容:

<!-- mapred.job.tracker -JobTracker的主机(或者IP)和端口。-->

<property>

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

<value>localhost:9001</value>

</property>

特别提醒:结束以上配置后主要有两个错误情况!

一、在执行hadoop namenode -format 出错误信息:
“SHUTDOWN_MSG: Shutting down NameNode at java.net.UnknownHostException: localhost.localdomain: localhost.localdomain”

原因:是因为你在配置上面时候你的主机名不是locahost。而你只是照本宣科的照抄代码。你要找到你自己的主机名用hostname看看你的主机名叫什么?然后,把上面从2-4配置的hadoop的文件的localhost主机名改成你的。当然还不是那么简单。推荐两个博客自己去看看具体解决方法:点击打开链接 
 点击打开链接

二、出现  localhost: Error: JAVA_HOME is not set

原因:认真检查一下上面配置Hadoop的1文件的过程中是否去掉了‘#’和路径是否真的对。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: