一、安装jdk
安装过程可参考http://www.jb51.cc/article/p-cfegmtdu-brk.html
二、添加用户,并设置免密登陆
1、 添加用户
1)创建用户
useradd -m hadoop -s /bin/bash
这条命令创建了可以登陆的 hadoop用户,并使用 /bin/bash作为shell
2)之后设置登陆密码
passwd hadoop
输入2次密码就可以了(密码可以随意,比如:hadoop)
visudo
新增hadoop ALL=(ALL) ALL
Ps:可直接将上一行复制下来,再将root改为hadoop
2、 SSH安装
1) 退出root用户(可直接用ctrl+d快捷键,也可以用exit命令)
2) 安装SSH,
集群、单节点模式都需要用到 SSH登陆(类似于远程登陆,你可以登录某台 Linux主机,并且在上面运行命令),一般情况下,CentOS默认已安装了 SSH client、SSH server,打开终端执行如下命令进行检验:
rpm -qa | grep ssh
如果返回的结果如下图所示,包含了 SSH client跟 SSH server,则不需要再安装
如果需要安装,可用如下命令安装:
sudo yum install openssh-clients sudo yum install openssh-server
3) 安装好SSH后,测试是否可用:
ssh localhost
密码是刚才设置的hadoop用户密码
3、 设置免密登陆
结点之间通信都需要登陆,所以设置免密登陆会使通信无障碍。
2) 利用ssh-keygen生成密钥,并将密钥加入到授权中
exit # 退出刚才的 ssh localhost cd ~/.ssh/ # 若没有该目录,请先执行一次ssh localhost ssh-keygen -t rsa # 会有提示,都按回车就可以,执行完后会在.ssh文件夹下多出id_rsa和id_rsa.pub两个文件,分别为私钥和公钥(成对出现) cat id_rsa.pub >> authorized_keys # 加入授权,执行完后,.ssh文件夹下会多出authorized_keys文件,授权文件 chmod 600 ./authorized_keys # 修改文件权限
3)再次登陆localhost就可以不用密码了,测试完后,退出。
三、安装hadoop
1) 下载hadoop
到https://mirrors.cnnic.cn/apache/hadoop/common/ 下载hadoop,本文使用hadoop-2.7.4.tar.gz
2) 利用scp将hadoop压缩文件上传到服务器,并将其解压到/usr/local/文件夹下。
sudo tar -zxvfhadoop-2.7.4.tar.gz -C /usr/local/
3)进入/usr/local/目录,修改hadoop-2.7.4的目录权限
sudo chown -Rhadoop:hadoop hadoop-2.7.4/
四、Hadoop单机模式
Hadoop 默认模式为非分布式模式,无需进行其他配置即可运行。非分布式即单 Java 进程,方便进行调试。
现在我们可以执行例子来感受下Hadoop 的运行。Hadoop 附带了丰富的例子(运行./bin/hadoopjar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar可以看到所有例子),包括 wordcount、terasort、join、grep 等。
在此我们选择运行 grep 例子,我们将 input 文件夹中的所有文件作为输入,筛选当中符合正则表达式dfs[a-z.]+的单词并统计出现的次数,最后输出结果到 output 文件夹中。
注意,Hadoop默认不会覆盖结果文件,因此再次运行上面实例会提示出错,需要先将./output删除。
五、Hadoop伪分布式
Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 Datanode,同时,读取的是 HDFS 中的文件。
1)在设置 Hadoop 伪分布式配置前,我们还需要设置 HADOOP 环境变量,
执行命令vim ~/.bashrc,打开 ~/.bashrc文件,在文件最后添加如下内容:
# HadoopEnvironment Variables export HADOOP_HOME=/usr/local/hadoop export HADOOP_INSTALL=$HADOOP_HOME export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export YARN_HOME=$HADOOP_HOME export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
保存后退出,执行命令source~/.bashrc使其立即生效
2)修改hadoop的配置文件,位于/usr/local/Hadoop-2.7.4/etc/hadoop/中,伪分布式需要修改2个配置文件core-site.xml和hdfs-site.xml。Hadoop的配置文件是 xml 格式,每个配置以声明 property的 name和 value的方式来实现。
修改配置文件core-site.xml,将如下内容替换原来内容:
<configuration> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/local/hadoop/tmp</value> <description>Abase for other temporarydirectories.</description> </property> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> </configuration>
修改配置文件hdfs-site.xml,将如下内容替换原来内容:
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop/tmp/dfs/data</value> </property> </configuration>
3) 配置完成后,格式化NameNode
./bin/hdfs namenode -format
成功的话,会看到 “successfully formatted”和 “Exitting with status0”的提示,若为 “Exitting with status 1”则是出错。
4)接着开启NaneNode
和Datanode
守护进程(启动hadoop):
./sbin/start-dfs.sh
5)启动hadoop后,输入jps,列出如下进程,说明hadoop环境搭建成功
6)测试hdfs
hdfs dfs -put README.txt /README.txt hdfs dfs -cat /README.txt
如果能打印出README.txt中的内容,说明hdfds文件系统正常。
7)在浏览器输入http://111.230.248.70:50070即可看到hadoop的相关信息