最近开始研究学习hadoop,想把自己的一些知识点写在这里作为自己的学习记录。同时,如果能够为有需要的朋友带来帮助也是一件快乐的事。这篇文章基本上都是参考网上的资料,我按照自己的理解和实践经验将其组织起来。网上大多教程没有具体介绍操作的背后原因,我按照我的理解以及将一些分布于网上比较散乱的细碎知识点进行了组织。因为时间以及个人能力原因,本安装文档会存在很多不足,后期我也会努力去学习提高自己。我的博客园之旅就以此hadoop安装开始。因为时间原因,我第一次发博客,图片没有加上,不过文章基本描述清楚安装过程。
我的操作系统是Ubuntuserver16.04.1,虚拟机64位。
1 安装jdk(jdk-8u101-linux-x64.tar.gz)
(1) 网上下载源:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
(2)将压缩包放置到/usr/lib/jvm目录下
(3)解压压缩包:sudo tar -zxvf jdk-8u101-linux-x64.tar.gz
(4)配置环境变量
打开当前用户的shell环境变量配置文件
vim ~/.bashrc
在文件末尾添加如下信息
#begin copy
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_101
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
#end copy
注意:
(1)上面配置信息中的蓝色部分为你解压出来的jdk文件夹所在的路径,这个可以根据自己的实际情况设置,如我将安装包jdk-8u101-linux-x64.tar.gz解压到/usr/local路径下,则JAVA_HOME配置变为export JAVA_HOME=/usr/local/jdk1.8.0_101
(2)上述配置只适用于当前用户,如果要对所有用户进行同样的设置,即要让所有用户都能使用该jdk,则应该配置/etc/bashrc文件,关于/etc/profile,/etc/bashrc,~/.bashrc以及~/.bash_profile之间的关系请参看http://blog.csdn.net/chenchong08/article/details/7833242
(5)使配置的环境变量生效:source ~/.bashrc(~/.bashrc文件的配置改变后不需要重启系统即可立即设置生效)
(6)检查安装是否成功:
java -version
#若安装成功,则会提示jdk版本信息。
2 安装ssh实现免密码登录
(1) 因为Hadoop需要使用ssh进行通信,所以我们需要在我们的操作系统上安装ssh。在安装之前,我们需要查看系统是否已经安装并且启动了ssh。直接进行安装,若已安装怎会提示已经安装。
sudo apt-get install openssh-server
(2)安装ssh
sudo apt-get install ssh
(3)生成秘钥
#ssh安装成功后在用户根目录下会有一个隐藏文件夹.ssh,如果没有请先执行一次命令ssh loaclhost
#进入.ssh目录
cd ~/.ssh
#生成秘钥,会有提示,都按回车就可以
ssh-keygen -t rsa P ‘‘
#出现一个图形,出现的图形就是密码,不用管它
#此时会在/home/yw0/.ssh下生成两个文件:id_rsa和id_rsa.pub,前者为私钥,后者为公钥。
#现在我们将公钥追加到authorized_keys中(authorized_keys用于保存所有允许以当前用户身份登录到ssh客户端用户的公钥内容)
~$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
#现在可以登入ssh确认以后登录时不用输入密码:我的主机名为ubuntu0,用ssh localhost也可以
#关闭防火墙
sudo ufw disable
#该命令为永久性生效,即重启开机后防火墙也不会重新打开,需要用命令sudo ufw enable
3 安装hadoop
(1)解压hadoop安装包
#hadoop安装到任何位置都可以,只要有权限读写。这里我们将hadoop安装到当前用户根目录下
#将安装包放置到用户根目录(/home/yw0)下(放到其他路径也可以),然后将安装包解压到hadoop文件夹中
tar -zxvf hadoop-2.7.3.tar.gz
#解压完成后在hadoop会多出一个hadoop-2.7.3文件夹
#将解压得到的文件夹hadoop-2.7.3重命名为hadoop,不重命名也可以,这里只是为了方便简洁,文件夹名称根据用户喜好可自行设定。
(2)单机模式环境配置
#单机模式环境配置
#打开用户根目录下的.bashrc文件
vim ~/.bashrc
#将如下信息添加到之前配置JAVA_HOME一行后面
export HADOOP_INSTALL=/home/yw0/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
#使配置生效
source ~/.bashrc
#检查是否安装成功,执行命令:hdfs后,看到出现帮助信息,即表示单机模式安装成功。
(3)伪分布模式环境配置
#在配置前我们需要将/etc/hosts文件打开,把主机名对应的ip改为我们设置的静态ip,这里我的ip是192.168.56.109
#配置hadoop-env.sh,如果在运行hadoop时发现找不到jdk,可以直接将jdk的路径放置到hadoop-env.sh里面,在该文件的行
# The java implementation to use.后面添加如下信息:
# The java implementation to use.
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_101
1.配置core-site.xml文件
#首先在/home/yw0下新建tmp文件夹
#将如下信息复制到<configuration>内
<property>
<name>fs.defaultFS</name>
<value>hdfs://ubuntu0:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/yw0/hadoop/tmp</value>
</property>
#fs.defaultFS用来指定NameNode的地址?。
#hadoop.tmp.dir?用来指定Hadoop运行时产生的文件的存放目录。
2.配置hdfs-site.xml文件
#首先在/home/yw0/hadoop下新建文件夹hdfs,然后在新建文件夹hdfs下新建namenode、datanode和ckp三个文件夹
#将如下信息复制粘贴到标签<configuration>中
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/yw0/hadoop/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/yw0/hadoop/hdfs/datanode</value>
</property>
<property>
<name>fs.checkpoint.dir</name>
<value>/home/yw0/hadoop/hdfs/ckp</value>
</property>
<property>
<name>fs.checkpoint.edits.dir</name>
<value>/home/yw0/hadoop/hdfs/ckp</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
#dfs.replication用来指定HDFS保存数据副本的数量(算上自己),默认为3。
3 配置mapred-site.xml文件
#默认没有etc/hadoop/mapred-site.xml,却有一个etc/hadoop/mapred-site.xml.template文件,copy一份重命名即可
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
4 配置yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>ubuntu0</value>
</property>
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
#yarn.nodemanager.aux-services告诉Hadoop NodeManager获取数据的方式是shuffle的方式
#yarn.resourcemanager.hostname指定YARN的老大(ResourceManager)的地址(可以是地址,可以是域名,可以是主机名)。
5 格式化
hdfs namenode -format
#若出现namenode has been successfully formated则表示安装成功
6 启动hdfs并查看进程
sbin/start-all.sh
jps
7 停止hdfs
sbin/stop-all.sh 或者sbin/stop-dfs.sh sbin/stop-yarn.sh
参考文章:
http://www.tuicool.com/articles/zyQBZv--这篇博客有详细的伪分布模式的配置说明
http://blog.csdn.net/tomato__/article/details/48547953
http://www.cnblogs.com/maybe2030/p/4591195.html
http://blog.csdn.net/GnahzNib/article/details/52488675
http://blog.csdn.net/joe_007/article/details/8298814--ssh localhost免密码登录