1.准备环境
下载CentOS:
https://www.centos.org/download/
下载JDK:
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
下载 Hadoop:
https://hadoop.apache.org/releases.html
2.安装步骤
首先熟悉以下linux常用命令。
cd / 切换到根目录
cd ~ 切换到用户跟目录
mkdir xxx新增目录
ls -a 查看当前目录下的所有目录,以及隐藏目录
ls -l 查看当前目录下的所有目录的详细信息
find /root -name *test*搜索目录
mv xxx aaa (xxx 旧目录名,aaa新目录名) 修改目录
mv yyy /root (yyy需要修改目录。/root 剪切到的位置) 移动目录
cp -r aaa / (将aaa目录复制到根目录下)
cp tt.zip / (将tt.zip复制到根目录下)
rm 删除文件
rm-r 删除目录
rm-rf 强制删除目录
touch test.txt 新建文件
rm -rf xxx.txt 删除文件
tar -zcvf 打包后的名称 打包前的名称 压缩文件
tar -zcvf xxx.tar.gz ./* (./*表示当前目录下的所有文件)
tar-xvf 包名 解压到当前的目录
tar-xvf 包名 -C 目标目录 解压到指定的目标目录
文件编辑:
vim文件名-->进入文件-->命令模式-->按i进入编辑模式-->编辑文件-->按Esc进入底行模式-->输入:-->输入命令 wq(保存并退出) 输入q! (不保存,强制退出)
yum install packagexx安装Linux的源包软件
yum remove xx 卸载软件
rpm -ivh package安装第三方源包
rpm -e --nodeps xxx 卸载
了解掌握以上基础命令可以让一个新手少走很多弯路。
安装准备
安装前最好是启用并登录root用户操作,会减少很多麻烦。
注意安装包和系统是否匹配,如果是64位,则保证都是64位二进制程序。
linux操作最好还是选择CentOS,ubuntu亲测系统容易崩溃,恢复起来难度太大。
修改主机名:
vim /etc/sysconfig/network
这里考虑后期集群配置,主机名设置为:Master.Hadoop
NETWORKING=yes
HOSTNAME=Master.Hadoop
配置Host,配置的作用是不用每次都输入这么长的IP
vim /etc/hosts
文件尾部增加:192.168.241.130 Master.Hadoop
配置完成后,重启机器。
2.1安装JDK
在/usr/lib/下新建jdk1.8文件夹
下载好的安装包jdk-8u161-linux-x64.tar.gz复制到jdk1.8目录下,解压提取文件到当前目录。
解压完安装包,并按照目录放置程序后,配置环境变量。
vim /etc/profile
# set java environment
export JAVA_HOME=/usr/lib/jdk1.8
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
source /etc/profile
2.2安装=Hadoop
在/usr/lib/下新建hadoop2.6.5文件夹
下载好的安装包hadoop-2.6.5.tar.gz复制到jdk1.8目录下,解压提取文件到当前目录。
配置环境变量:
#hadoop2.6.5
export HADOOP_HOME=/usr/lib/hadoop2.6.5
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native
export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib"
export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH
配置生效
source /etc/profile
接下来配置hadoop,每一步一定要信息,不然后期排查问题够头疼的。
所有配置文件目录:/usr/lib/hadoop2.6.5/etc/hadoop,共6个文件需要配置。
(1)配置:core-site.xml
<configuration>
<!-- HDFS file path -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.241.130:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/lib/hadoop2.6.5/tmp</value>
<description>Abasefor other temporary directories.</description>
</property>
</configuration>
目录下file:/usr/hadoop/hadoop-2.6.5/tmp,tmp目录需要手动创建。
(2)配置:hdfs-site.xml
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.241.130:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/lib/hadoop2.6.5/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/lib/hadoop2.6.5/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>false</value>
</property>
</configuration>
(3)配置mapred-site.xml
mapred-site配置需要手动添加一个该文件,或者直接复制系统给出的mapred-site.xml.template内容
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>192.168.241.130:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>192.168.241.130:19888</value>
</property>
</configuration>
(4)配置yarn-site.xml
<!-- Site specific YARN configuration properties -->
<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>
<property>
<name>yarn.resourcemanager.address</name>
<value>192.168.241.130:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>192.168.241.130:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>192.168.241.130:8035</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>192.168.241.130:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>192.168.241.130:8088</value>
</property>
(5)配置hadoop-env.sh
export JAVA_HOME=/usr/lib/jdk1.8
(6)配置yarn-env.sh
export HADOOP_YARN_USER=/usr/lib/jdk1.8
配置完成后,最好从头到位再检查一遍,一定注意每个细节不出问题。
3. 启动Hadoop
首先切换到安装目录
HDFS初始化
bin/hadoop namenode –format
启动HDFS
$HADOOP_HOME/sbin/start-dfs.sh
停止HDFS
$HADOOP_HOME/sbin/stop-dfs.sh
查看运行状态
$HADOOP_HOME/bin/hadoop dfsadmin –report
视图查看运行状态
http://192.168.241.130:50070/dfshealth.html#tab-overviewa
Hadoop集群启动
$HADOOP_HOME/sbin/start-yarn.sh
停止Hadoop集群
$HADOOP_HOME/sbin/stop-yarn.sh
视图查看集群运行状态
4.异常排除
当然,很多情况下都不能一次成功的。下面是集中常见的异常和处理办法。
(1)WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
出现这个异常时,很有可能是/usr/lib/hadoop2.6.5/lib/native版本与系统版本不对应导致,
这种情况在hadoop2.4之前的版本比较常见,因为官网编译的二进制包是32位。
可以执行file libhadoop.so.1.0.0查版本。
网上还提到一种缺少配置的异常解决办法:
在hadoop-env.sh中重新配置:
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native
export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native/"
当尝试多种办法不能得以解决时,我们可以进入debug模式查看异常具体原因:
在etc/hadoop/hadoop-env.sh文件中添加下面配置:
export HADOOP_ROOT_LOGGER=DEBUG,console
(2)配置ssh
配置hadoop集群时一定要配ssh免密登录,但是配单机有时候也会提示SSH的异常,配置方法如下:
检测是否已经配置ssh
ssh -version
获取并安装ssh
sudo apt install openssh-server
或者通过yum install openssh-server安装
配置ssh免密登录
ssh-keygen -t rsa #回车
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
测试ssh无密登陆
ssh 主机名 #如果不提示输入密码则配置成功
(3)需要配置安装2.14的glibc库
有网友提供了下载地址:http://pan.baidu.com/s/1eRNygZC 密码:s2r0
下载下来,放在桌面任意位置都行,把所有文件放在一个文件夹里。
执行:rpm -Uvh glibc-2.14.1-6.x86_64.rpm glibc-common-2.14.1-6.x86_64.rpm glibc-headers-2.14.1-6.x86_64.rpm glibc-devel-2.14.1-6.x86_64.rpm nscd-2.14.1-6.x86_64.rpm
安装完成
(4)异常openssl: false Cannot load libcrypto.so (libcrypto.so: 无法打开共享对象文件: 没有那个文件或目录
打开缺少的路径,这里缺少的是usr/lib64
执行命令:
echo "/usr/ lib64 " >> /etc/ld.so.conf
ldconfig
(5) WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
所有准备就绪,执行hadoop fs –ls /时又出现
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
ls: `.': No such file or directory
此时按照之前方式debug 查看具体原因,发现缺少HADOOP_OPTS配置。
在hadoop-env.sh中添加HADOOP_OPTS配置
# Extra Java runtime options. Empty by default.
#export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true"
export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib:$HADOOP_PREFIX/lib/native"