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_79 3 export JRE_HOME=${JAVA_HOME}/jre 4 export CLASSPATH=${JAVA_HOME}/lib 5 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-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
#ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
生成密钥文件时,会提示输入密码,这里我们不输入密码,默认按回车
可以用“passwd 用户” 来修改ssh的登录密码。
4、启动ssh
/etc/init.d/ssh status 查看ssh状态 /etc/init.d/ssh start 启动ssh /etc/init.d/ssh restart 重启ssh
5、测试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/profile export HADOOP_INSTALL=/usr/local/hadoop export PATH=$PATH:$HADOOP_INSTALL/bin export PATH=$PATH:$HADOOP_INSTALL/sbin export HADOOP_MAPRED_HOME=$HADOOP_INSTALL export HADOOP_COMMON_HOME=$HADOOP_INSTALL export HADOOP_HDFS_HOME=$HADOOP_INSTALL export YARN_HOME=$HADOOP_INSTALL export 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.xml文件
<configuration>/*这里的值指的是默认的HDFS路径*/ <property> <name>fs.default.name</name><!-- 客户端用于连 HDFS端口,操作文件. --> <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>/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.xml
创建namenode和datanode目录,执行以下命令
$ mkdir /hdfs/namenode
$ mkdir /hdfs/datanode
配置hdfs-site.xml文件
<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.xml文件
<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.xml文件 伪分布式不用配
<configuration>/*hadoop对map-reduce运行框架一共提供了3种实现,在mapred-site.xml中通过"mapreduce.framework.name"这个属性来设置为"classic"、"yarn"或者"local"*/ <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 master
192.168.0.156 slave1
9)、格式化Namenode(在Hadoop根目录下)
./bin/hadoop namenode -format
10)、启动hadoop(在hadoop根目录下)
./sbin/start-all.sh
11)、查看hadoop是否启动功能
五、测试hadoop
1、hadoop根目录下创建文件夹
hadoop fs -mkdir /test
2、查看hadoop目录文件
http://localhost:8088
http://localhost:50070
HDFS NameNode界面:http://localhost:8042
hadoop 下载地址:http://archive.apache.org/dist/hadoop/core/hadoop-2.6.0/