你的位置:首页 > 数据库

[数据库]Hadoop 安装指南


一、安装JDK

  1、用户可以在Oracle JDK的官网下载相应版本的JDK,本例以JDK 1.6为例,官网地址为http://www.oracle.com/tech-network/java/javase/downloads/index.html。

  2、配置环境变量,在/etc/profile增加以下代码。  

1 #Seeting JDK JDK环境变量2 export JAVA_HOME=/opt/java/jdk/jdk1.7.0_793 export JRE_HOME=${JAVA_HOME}/jre4 export CLASSPATH=${JAVA_HOME}/lib5 export PATH=${JAVA_HOME}/bin:$PATH

  输入java -version命令查看是否安装成功

  

二、配置SSH

  一般linux系统都自带了SSH服务,如果没有SSH服务需要自己安装

  1、查看是否安装SSH: ps -e | grep ssh

    

    如果没有显示sshd,说明没有安装ssh服务

  2、通过 “sudo apt-get install openssh-server” 安装   

$ sudo apt-get install openssh-server正在读取软件包列表... 完成正在分析软件包的依赖关系树    正在读取状态信息... 完成    有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件包尚未被创建或是它们已被从新到(Incoming)目录移出。下列信息可能会对解决问题有所帮助: 下列软件包有未满足的依赖关系: openssh-server : 依赖: openssh-client (= 1:6.6p1-2ubuntu1)E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

  这是因为,openssh-server是依赖于openssh-clien的,那ubuntu不是自带了openssh-client吗?原由是自带的openssh-clien与所要安装的openssh-server所依赖的版本不同,这里所依赖的版本是1:6.6p1-2ubuntu1,所以要安装对应版本的openssh-clien,来覆盖掉ubuntu自带的。  

$ sudo apt-get install openssh-client=1:6.6p1-2ubuntu1正在读取软件包列表... 完成正在分析软件包的依赖关系树    正在读取状态信息... 完成    建议安装的软件包: libpam-ssh keychain monkeysphere下列软件包将被【降级】: openssh-client升级了 0 个软件包,新安装了 0 个软件包,降级了 1 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。需要下载 566 kB 的软件包。解压缩后会消耗掉 0 B 的额外空间。您希望继续执行吗? [Y/n] y获取:1 http://cn.archive.ubuntu.com/ubuntu/ trusty/main openssh-client amd64 1:6.6p1-2ubuntu1 [566 kB]下载 566 kB,耗时 2秒 (212 kB/s)    dpkg:警告:downgrading openssh-client from 1:6.6p1-2ubuntu2 to 1:6.6p1-2ubuntu1(正在读取数据库 ... 系统当前共安装有 200015 个文件和目录。)Preparing to unpack .../openssh-client_1%3a6.6p1-2ubuntu1_amd64.deb ...Unpacking openssh-client (1:6.6p1-2ubuntu1) over (1:6.6p1-2ubuntu2) ...Processing triggers for man-db (2.6.7.1-1) ...正在设置 openssh-client (1:6.6p1-2ubuntu1) ...

 可以看到,提示了系统中openssh-client被降级,这样再安装openssh-server就可以成功了!

  3、查看SSH 目录 /etc/ssh 下是否有密钥文件

  

三、配置SSH免密码登录

  1、输入 ssh-keygen  -t rsa

$ssh-keygen -t rsa Generating public/private rsa key pair.Enter file in which to save the key (/root/.ssh/id_rsa):/*回车,设置默认路径*/Enter passphrase (empty for no passphrase):/*回车,设置空密码*/Enter same passphrase again:Your identification has been saved in /root/.ssh/id_rsa.Your public key has been saved in /root/.ssh/id_rsa.pub.如果是root用户,则在/root/.ssh/目录下生成一个私钥id_rsa和一个公钥id_rsa.pub。

  2、将id_rsa.pub 文件 写入 authorized_keys 

          cat id_rsa.pub >> ~/.ssh/authorized_keys  

   查看 /root/.ssh目录

   

 3、装id_rsa.pub 文件发送到远程机器上

  scp id_rsa.pub root@172.20.14.144:/home

  cat /home/id_rsa.pub >> /root/.ssh/authorized_keys

  这样ssh登录远程机器就不需要密码了。

四、安装Hadoop

  1、下载安装Hadoop2.2.0

  2、解压tar包  

$ sudo tar-vxzf hadoop-2.2.0.tar.gz -C /usr/local$ cd /usr/local$ sudo mv hadoop-2.2.0 hadoop
$ sudo addgroup hadoop  添加hadoop组
$ sudo adduser -ingroup hadoop hadoop 添加hadoop用户$ sudo chown -R hduser:hadoop hadoop 授权

  3、查看Hadoop包是32位还是64位

   

  4、配置Hadoop环境变量  

$ gedit /etc/profileexport HADOOP_INSTALL=/usr/local/hadoopexport PATH=$PATH:$HADOOP_INSTALL/binexport PATH=$PATH:$HADOOP_INSTALL/sbinexport HADOOP_MAPRED_HOME=$HADOOP_INSTALLexport HADOOP_COMMON_HOME=$HADOOP_INSTALLexport HADOOP_HDFS_HOME=$HADOOP_INSTALLexport YARN_HOME=$HADOOP_INSTALLexport HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native" 

  5、编辑配置文件

    1)、进入Hadoop所在目录/usr/local/hadoop/etc/hadoop。

    2)、配置core-site.

<configuration>/*这里的值指的是默认的HDFS路径*/  <property>    <name>fs.defaultFS</name>    <value>hdfs://master:9000</value>  </property>/*缓冲区大小:io.file.buffer.size默认是4KB*/  <property>    <name>io.file.buffer.size</name>    <value>131072</value>  </property>/*临时文件夹路径*/  <property>    <name>hadoop.tmp.dir</name>    <value>file:/home/tmp</value>    <description>Abase for other temporary directories.    </description>  </property>  <property>    <name>hadoop.proxyuser.hduser.hosts</name>    <value>*</value>  </property>  <property>    <name>hadoop.proxyuser.hduser.groups</name>    <value>*</value>  </property></configuration>

    3)、配置hdfs-site.

       创建namenode和datanode目录,执行以下命令

             $ mkdir /hdfs/namenode
             $ mkdir /hdfs/datanode

       配置hdfs-site.

<configuration>  <!--  <property>      <name>dfs.namenode.rpc-address</name>      <value>master:9000</value>   </property>-->  <!--  <property>  <name>dfs.namenode.http-address</name>  <value>master:50070</value>  <description>dfs namenode web ui 的地址 </description>      </property>-->  <property>    <name>dfs.namenode.secondary.http-address</name>    <value>master:9001</value><!--???-->  </property>    <property>    <name>dfs.namenode.name.dir</name>    <value>file:/hdfs/namenode</value>  </property>  <!--配置datanode的数据存储目录-->  <property>    <name>dfs.datanode.data.dir</name>    <value>file:/hdfs/datanode</value>  </property>  <!--配置副本数-->  <property>    <name>dfs.replication</name>    <value>3</value>  </property>  <!--将dfs.webhdfs.enabled属性设置为true,否则就不能使用webhdfs的LISTSTATUS、LISTFILESTATUS等需要列出文件、文件夹状态的命令,因为这些信息都是由namenode保存的-->  <property>    <name>dfs.webhdfs.enabled</name>    <value>true</value>  </property></configuration>

   4)、配置hadoop-env.sh 和 yarn-env.sh 文件

      加入环境变量:export JAVA_HOME=/opt/java/jdk/jdk1.7.0_79/

   5)、配置yarn-site.

<configuration>  <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>/*resourcemanager的地址*/  <property>    <name>yarn.resourcemanager.address</name>    <value>master:8032</value>  </property>/*调度器的端口*/  <property>    <name>yarn.resourcemanager.scheduler.address</name>    <value> master:8030</value>  </property>/*resource-tracker端口*/  <property>    <name>yarn.resourcemanager.resource-tracker.address</name>    <value>master:8031</value>  </property>/*resourcemanager管理器端口*/  <property>    <name>yarn.resourcemanager.admin.address</name>    <value>master:8033</value>  </property>/*ResourceManager 的 Web 端口,监控 job 的资源调度*/  <property>    <name>yarn.resourcemanager.webapp.address</name>    <value>master:8088</value>  </property></configuration>

   6)、配置mapred-site.

<configuration>/*hadoop对map-reduce运行框架一共提供了3种实现,在mapred-site.<property>    <name>mapreduce.framework.name</name>    <value>yarn</value>  </property>/*MapReduce JobHistory Server地址*/  <property>    <name>mapreduce.jobhistory.address</name>    <value>master:10020</value>  </property>/*MapReduce JobHistory Server Web UI地址*/  <property>    <name>mapreduce.jobhistory.webapp.address</name>    <value>master:19888</value>  </property></configuration>

    7)、配置masters,slaves 

      sudo gedit /usr/local/hadoop/etc/hadoop/masters 添加:localhost (或master 必须配置hosts文件)

      sudo gedit /usr/local/hadoop/etc/hadoop/slaves  添加:localhost

   8)、配置hosts 文件 (可不配置)

      gedit /etc/hosts   添加如下内容

192.168.0.161 master192.168.0.156 slave1

   9)、格式化Namenode(在Hadoop根目录下)

 ./bin/hadoop namenode -format

   10)、启动hadoop(在hadoop根目录下)

./sbin/start-all.sh

  

 

五、测试hadoop

  1、hadoop根目录下创建文件夹

hadoop fs -mkdir /test

  2、查看hadoop目录文件