linux下最新版本Hadoop安装部署全过程记录

一.首先安装JDK和HADOOP

1.在官方网站上下载java的开发包即JDK,扩展名是tar.gz的比较好,个人不太推荐RPM的;

2.下载之后,解压缩,

tar zxvf xxx.tar.gz ./jdk

sudo mv ./jdk /usr/lib/jdk

我将其存放在

/usr/lib/jdk

这个目录下了

3.同时呢,也下载一下hadoop吧,hadoop的下载地址,百度搜完不是广告的那个,第一个就是了。。。。

在release下下载,同样解压缩,方法同上,我放在了

/usr/lib/hadoop

这个目录中

4.最关键的,配置环境变量

这里面等一下说一个问题,就是按照网上的一些方法,会产生一些错误,导致eclipse这些软件报错。

环境变量可以在 ~/.bashrc 这里更改,通过bash的启动,来实现更新环境变量。

另一种方法是直接修改/etc/environment 这个文件。

这里面我们以第一种为例,比较常用,第二种可能会因为linux的版本不同而会产生些歧义。

sudo nano ~/.bashrc

这里不要忘记前面那个点,隐藏文件(往往也都是系统文件)

找一个地方填上几句话:

export JAVA_HOME=/usr/lib/jdk

export JRE_HOME=/usr/lib/jdk/jre

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib/dt.jar:$JAVA_HOME/lib/tools$
export HADOOP_HOME=/usr/lib/hadoop
export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:${HADOOP_HOME}/bin:$PATH

在上面,我把hadoop和java的一并配置好了。

这里面顺便提一个我实际部署到时候遇到的一个问题。

我们在使用eclipse的时候,由于eclipse是绿色软件,直接解压缩就可一用了,是通过环境变量来找到java路径的,

网上的配置教程配置会提示找不到JRE,因为这里面的JRE_HOME环境变量没有被放在PATH中,这个要注意,截至目前,网上现有的教程有问题。

5.然后,保存好这个~/.bashrc文件,nano中ctrl+O搞定。

更新一下,立即生效

source ~/.bashrc

没有提示出错,就是这个脚本没问题。这个脚本实际上是在bash解释器启动时候自动运行的一个脚本,export命令可以用来更新环境变量。

这样处理,便可以在每次开机的时候,自动去动态更新环境变量了。

试一下,terminal中输入

java -version

hadoop version

有回显,基本没啥大问题。

二.配置ssh

网上其他配置教程我自己实践发现有点儿问题,这里等下一并指出。

首先,确保安装ssh了,ubuntu默认都有安装。

如果没有安装的话:

sudo apt-get install ssh

首先,配置ssh免密,网上给出 命令行带参数配置方法:

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
其实,我还是比较喜欢手动配置:

ssh-keygen

按照提示生成密钥即可,空密码直接按三个回车即可。

然后:

cd ~/.ssh

cp ./id_dsa.pub ./authorized_keys

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
最好改下权限:

chmod 600 ./authorized_keys

或 chmod go-x ./authorized_keys 都行

配置好免密登录后,试一试吧:

ssh localhost

如果提示:

Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-32-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

Last login: Sun Oct 12 13:27:58 2014 from localhost
登录成功~

但是,大部分都会失败,因为ubuntu默认没有安装ssh server版本的,至少我的是失败的,会提示:

ssh connect refused!

需要我们安装一下server版本的:

sudo apt-get install openssh-server

有的童鞋仍然安装不上,因为xxx存在依赖关系,这样我们是没办法安装的,提示内容

大致是存在依赖关系,然后 给出一个具体的版本,大致内容是:

openssh-client(=xxxx)

有一个这样的东西,出现这个原因是机器上的client和server存在版本上到依赖关系,这样是没办法直接安装的,我们要给ssh client降级!

sudo apt-get install openssh-client=xxxx

注:这个xxxx每个电脑都有可能因为Linux版本不同而不同。

详细内容可以搜索 ssh 降级

降级之后,安装ssh server

sudo apt-get install openssh-server

基本就没问题了。

可以试一试:

ssh localhost

至于有的人说,最好给ssh加到启动项里面,我这个版本的是每必要,可能因为版本不同,实际也有些差距。

加到/etc/init.d/ssh这里,一般都默认,反正我是没有加。

三.配置hadoop

1.单机模式

不用配置了,可以试试HADOOP自带的文本统计

bin/hadoop jar /usr/lib/hadoop/mapreduce/hadoop-mapreduce-examples-2.4.0.jar wordcount input output

其中 input上传hdfs中的命令是:

./bin/hdfs dfs -put input /input
2.伪分布模式

首先创建一个用户文件夹,

mkdir ~/hadoop_tmp

就叫这个名吧,好多都用这个名


直接在hadoop的安装目录中找到配置文件改下就可以了,我的安装在了:

/usr/lib/hadoop

配置文件在下级目录的......./etc/hadoop中.

修改hadoop-env.sh的

export JAVA_HOME=${JAVA_HOME}

这个必须改,不要以为JAVA_HOME之前已经加到.bashrc中就不用改了。

core-site.xml


  
    fs.defaultFS
    hdfs://localhost:9000
    <final>truefinal>
  

  
    hadoop.tmp.dir
    ~/hadoop_tmp
  

hdfs-site.xml修改:


       
      dfs.namenode.name.dir
      /usr/lib/hadoop/dfs/namenode
      true
   
      
    
       dfs.datanode.data.dir
       /usr/lib/hadoop/dfs/datanode
      true
   

   
      dfs.http.address
      localhost:50070
      
         The address and the base port where the dfs namenode web ui will listen on.
If the port is 0 then the server will start on a free port.
     

   

   
      dfs.replication
      1
   

   
      dfs.permissions
      false
   



mapred.xml修改:


       
      mapreduce.framework.name
      yarn
   

   
      mapred.job.tracker
      hdfs://localhost:9001
   

         
          mapred.system.dir  
          file:/usr/lib/hadoop/mapred/system  
          true  
       
 
       
         
          mapred.local.dir  
          file:/usr/lib/hadoop/mapred/local  
          true  
       


yarn-site.xml:





 
    yarn.nodemanager.aux-services
    mapreduce_shuffle
    shuffle service that needs to be set for Map Reduce to run
 

 
    yarn.resourcemanager.hostname
    localhost
    hostname of Resource Manager
 


4.启动伪分布式模式:

第一次启动都要格式化下数据文件,命令:

./bin/hdfs namenode -format

启动hadoop,命令:

./sbin/start-all.sh

查看,命令:

jps

有显示,是正确的,端口前面配置文件里面有写:


NameNode 50070
ResourceManager 8088
MapReduce JobHistory Server 19888





其中19888端口要启动JobHistoryServer进程,启动命令如下:

./sbin/mr-jobhistory-daemon.sh start historyserver

你可能感兴趣的:(大数据技术杂谈)