上一篇blog介绍了多节点Linux集群的构造,本篇blog介绍基于单一节点Hadoop伪分布安装,有时间再尝试多节点Hadoop安装。Hadoop有三种安装模式,分别是:
添加一名“hadoop”用户,并给与管理员权限,方便系统的部署。
sudo useradd -m hadoop -s /bin/bash
sudo passwd hadoop
sudo adduser hadoop sudo
Ubuntu默认安装了SSH client,还需要安装SSH server。
sudo apt-get install openssh-server
安装后需要使用密码登录本机,先看下是否安装成功。
ssh localhost
每次登录要密码显然不方便,需要配置为SSH无密码登录,设置方法如下:
exit # 退出刚才的 ssh localhost
cd ~/.ssh/ # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa # 采用rsa加密,在/home/当前用户/.ssh目录下找到id_rsa(私钥)和id_rsa.pub(公钥)
cat ./id_rsa.pub >> ./authorized_keys # 将公钥追加到authorized_keys中(authorized_keys用于保存所有允许以当前用户身份登录到ssh客户端用户的公钥内容)
代码含义如注释所写。
最后,使用ssh localhost
查看是不是不需要输入秘钥就可以直接登陆了。
下载JDK版本为1.8及以上的版本,创建安装目录,将文件解压到安装目录。
cd /usr/lib
sudo mkdir jvm #创建/usr/lib/jvm目录用来存放JDK文件
cd ~ #进入hadoop用户的主目录
cd Downloads #注意区分大小写字母,刚才已经通过FTP软件把JDK安装包jdk-8u162-linux-x64.tar.gz上传到该目录下
sudo tar -zxvf ./jdk-8u162-linux-x64.tar.gz -C /usr/lib/jvm #把JDK文件解压到/usr/lib/jvm目录下
设置环境变量
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_162
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
让配置生效
source ~/.bashrc
检查是否安装成功,返回正确的版本信息就是安装成功了
java -version
到hadoop官网下载安装文件到本地。本文是基于2.7.1装的,其他的版本好像也大差不差。
sudo tar -zxf ~/下载/hadoop-3.1.3.tar.gz -C /usr/local # 解压到/usr/local中
cd /usr/local/
sudo mv ./hadoop-3.1.3/ ./hadoop # 将文件夹名改为hadoop
sudo chown -R hadoop ./hadoop # 修改文件权限
cd /usr/local/hadoop
./bin/hadoop version
在伪分布式中,节点即作为NameNode也作为DataNode,同时读取HDFS中的文件。需要修改位于/usr/local/hadoop/etc/hadoop/ 中的core-site.xml 和 hdfs-site.xml两个文件。
1、修改core-site.xml 文件
cd /usr/local/hadoop
vim ./etc/hadoop/core-site.xml
把文件改为
<configuration>
<property>
<name>hadoop.tmp.dirname>
<value>file:/usr/local/hadoop/tmpvalue>
<description>Abase for other temporary directories.description>
property>
<property>
<name>fs.defaultFSname>
<value>hdfs://localhost:9000value>
property>
configuration>
上述配置是设定hadoop的临时目录(hadoop.tmp.dir)和分布式文件系统的地址(fs.defaultFS),通过这个地址访问分布式文件系统的各种数据。
2、修改 hdfs-site.xml文件
cd /usr/local/hadoop
vim ./etc/hadoop/hdfs-site.xml
把文件改为
<configuration>
<property>
<name>dfs.replicationname>
<value>1value>
property>
<property>
<name>dfs.namenode.name.dirname>
<value>file:/usr/local/hadoop/tmp/dfs/namevalue>
property>
<property>
<name>dfs.datanode.data.dirname>
<value>file:/usr/local/hadoop/tmp/dfs/datavalue>
property>
configuration>
dfs.replication代表副本的个数,由于伪分布式文件就只在一个机器上,副本数量设置为1。dfs.namenode.name.dir设置namenode的文件保存位置;dfs.datanode.data.dir设置DataNode的文件保存位置。
3、NameNode初始化
cd /usr/local/hadoop
./binfs namenode -format
4、开启NameNode和DataNode守护进程
cd /usr/local/hadoop
./sbin/start-dfs.sh
如果出现SSH提示,输入yes就好了
5、检查是否启动成功
jps
如果启动成功就有以下界面:
如果少一个,就要查看提示信息,看看是不是前面的配制出错了,详细检查一下。
通过简单的实例看hadoop是否安装成功
./bin/hdfs dfs -mkdir -p /user/hadoop #在HDFS中创建用户目录
./bin/hdfs dfs -mkdir input #在用户目录下创建一个input文件夹
./bin/hdfs dfs -put ./etc/hadoop/*.xml input#把./etc/hadoop文件下所有的xml文件复制上传到input文件夹中
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar grep input output 'dfs[a-z.]+' #执行一个grep操作并将结果放到output的文件夹中
./bin/hdfs dfs -cat output/* #查看文件运行结果
如果出现以下结果说明安装好了
虽然运行成功了,但发现老是出现Unable to load native-hadoop library for your platform… using builtin-java classes where applicable这个错误。虽然不影响运行结果,但这玩意还是挺烦的哈。于是就搜了一些资料,比较好的有:
vim ~/.bashrc #更改环境变量
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
当然,保存后需要再次让配置文件生效。
source ~/.bashrc
应该最后就不会报错了。
说明:
博主本人还是属于初级学习阶段,很多东西没解释明白。如果有错误欢迎交流。