一、JDK的安装与配置
(1)、自行前往Oracle官网下载JDK
(2)、下载后解压到相关路径,配置环境变量:
vi /etc/profile
添加如下配置
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export JAVA_BIN=$JAVA_HOME/bin
export JAVA_LIB=$JAVA_HOME/lib
export CLASSPATH=.:$JAVA_LIB/tools.jar:$JAVA_LIB/dt.jar
export PATH=$PATH:$JAVA_HOME/bin
(3)、刷新配置
source /etc/profile
二、配置SSH
sudo apt-get install ssh
sudo apt-get install rsync
(1)、用户主目录(cd ~),ls -a查看文件,其中一个为“.ssh”,该文件价是存放密钥的。生成的密钥都会放到这个文件夹中。
(2)、生成公钥和.ssh文件夹:ssh-keygen -t rsa
一路回车,不需要输入密码
(2)、命令生成密钥: ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
(使用rsa加密方式生成密钥)回车后,会提示三次输入信息,我们直接回车即可。
(3)、将生成的公钥id_rsa.pub 内容追加到authorized_keys,执行命令:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
多服务器间配置参考
验证:
执行命令:ssh localhost(主机名)
无错误提示则配置成功
三、hadoop的相关配置
(1)、官方的下载地址链接:Hadoop下载地址
(2)、下载后解压路径为/usr/hadoop/hadoop-2.7.3
(3)、配置hadoop
第一个:hadoop-env.sh
vim hadoop-env.sh
第27行中
export JAVA_HOME=/usr/jdk1.8.0_101
第二个:core-site.xml
<!-- 制定HDFS的老大(NameNode)的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/hadoop/hadoop-2.7.3/tmp</value>
</property>
第三个:hdfs-site.xml
<!-- 指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<!-- HDFS权限验证 -->
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
<!-- HDFS文件系统超级权限用户 -->
<property>
<name>dfs.permissions.superusergroup</name>
<value>root</value>
</property>
<!-- NameNode临时文件的存放目录 -->
<property>
<name>dfs.NameNode.name.dir</name>
<value>file:/usr/local/Hadoop-2.7.3/tmp/dfs/name</value>
</property>
<!-- datanode临时文件的存放目录 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/Hadoop-2.7.3/tmp/dfs/data</value>
</property>
第四个:mapred-site.xml
mv mapred-site.xml.template mapred-site.xml
vim mapred-site.xml
<!-- 指定MapReduce运行在YRAN上 -->
<property>
<name>MapReduce.framework.name</name>
<value>YRAN</value>
</property>
<!-- 指定任务是否可以跨平台提交 -->
<property>
<name>MapReduce.app-submission.cross-platform</name>
<value>true</value>
</property>
<!-- MapReduce应用程序的依赖包 -->
<property>
<name>MapReduce.application.classpath</name>
<value>
/usr/local/Hadoop-2.7.3/etc/Hadoop,
/usr/local/Hadoop-2.7.3/share/Hadoop/common/*,
/usr/local/Hadoop-2.7.3/share/Hadoop/common/lib/*,
/usr/local/Hadoop-2.7.3/share/Hadoop/hdfs/*,
/usr/local/Hadoop-2.7.3/share/Hadoop/hdfs/lib/*,
/usr/local/Hadoop-2.7.3/share/Hadoop/MapReduce/*,
/usr/local/Hadoop-2.7.3/share/Hadoop/MapReduce/lib/*,
/usr/local/Hadoop-2.7.3/share/Hadoop/YRAN/*,
/usr/local/Hadoop-2.7.3/share/Hadoop/YRAN/lib/*
</value>
</property>
第五个:yarn-site.xml
<!-- 指定YRAN的老大(ResourceManager)的地址 -->
<property>
<name>YRAN.resourcemanager.hostname</name>
<value>master</value>
</property>
<!-- reducer获取数据的方式 -->
<property>
<name>YRAN.nodemanager.aux-services</name>
<value>MapReduce_shuffle</value>
</property>
<!-- YRAN 应用环境 -->
<property>
<name>YRAN.application.classpath</name>
<value>
/usr/local/Hadoop-2.7.3/etc/Hadoop,
/usr/local/Hadoop-2.7.3/share/Hadoop/common/*,
/usr/local/Hadoop-2.7.3/share/Hadoop/common/lib/*,
/usr/local/Hadoop-2.7.3/share/Hadoop/hdfs/*,
/usr/local/Hadoop-2.7.3/share/Hadoop/hdfs/lib/*,
/usr/local/Hadoop-2.7.3/share/Hadoop/MapReduce/*,
/usr/local/Hadoop-2.7.3/share/Hadoop/MapReduce/lib/*,
/usr/local/Hadoop-2.7.3/share/Hadoop/YRAN/*,
/usr/local/Hadoop-2.7.3/share/Hadoop/YRAN/lib/*
</value>
</property>
(4)、配置hadoop的环境变量
vi /etc/profile
添加如下配置
export HADOOP_HOME=/usr/hadoop/hadoop-2.7.3
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop
执行指令 source /etc/profile
(5)、格式化namenode(是对namenode进行初始化)
hdfs namenode -format 或 hadoop namenode -format
(6)、安装完成后的验证
验证环境是否配置好:hadoop version
验证Java环境:java -version
验证节点是否可以启动:
start-all.sh
jps
有六项表示安装成功,否则请查看相应的日志文件,找出问题并重新启动
验证网页端是否正常:
http://192.168.3.97:8088/cluster
可以正常查看
四、安装过程中遇到的问题及解决方法
(1)、启动不了Namenode进程,出现IllegalArgumentException异常
在hdfs-site.xml
文件中将以下内容:
<property>
<name>dfs.namenode.name.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/data</value>
</property>
修改为:
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hdusr/hadoop-2.2.0/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hdusr/hadoop-2.2.0/tmp/dfs/data</value>
</property>
即使用绝对地址代替,如果没有上面的项,则直接添加即可
(2)、nodemanager启动失败,日志中错误如下:
java.lang.IllegalArgumentException: The ServiceName: mapreduce.shuffle set in yarn.nodemanager.aux-services is invalid.The valid service name should only contain a-zA-Z0-9_ and can not start with numbers
根据提示,Hadoop中命名规则是数字、字母或者下划线,其他字符会出现错误,修改重新启动即可
(3)、安装Hadoop启动之后总有警告:Unable to load native-hadoop library for your platform... using builtin-Java classes where applicable
Apache提供的hadoop本地库是32位的,而在64位的服务器上就会有问题,因此需要自己编译64位的版本。
查看当前是多少位的方法为:
file /usr/hadoop/hadoop-2.7.3/lib/native/libhadoop.so.1.0.0
去网站:http://dl.bintray.com/sequenceiq/sequenceiq-bin/">http://dl.bintray.com/sequenceiq/sequenceiq-bin/ 下载对应的编译版本,并将准备好的64位的lib包解压到已经安装好的hadoop安装目录的lib/native 和 lib目录下
我在安装的过程中遇到这个问题,并没有重新编译源代码,虽然这样肯定可行,但是太麻烦,我将Hadoop根目录下etc/hadoop/hadoop-env.sh中的下如下内容注释掉:
export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true"
然后修改该内容为:
export HADOOP_OPTS="-Djava.library.path=$HADOOP_PREFIX/lib:$HADOOP_PREFIX/lib/native"