0.前言
最近因为需要所以要安装hadoop,但是网上怎么说呢,就是很混乱,各种资料,各种安装方法,总体来说都不是很有效果,经过了3天的挣扎,收集资料,才完成了部署。
1.从官网上获得对应的安装包
下载地址:
https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.10.0/hadoop-2.10.0.tar.gz
点击第一个
下载完成如下文件夹
2.将安装包传入系统
这里使用rz插件。
一般刚开始的时候系统里面是没有的,此处我们需要手动安装一下。
apt install lrzsz
然后就开始传输文件
===等等吧
网速太慢了,啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
3.准备Java环境
上传Java环境
此处我已经准备好了环境了。
jdk-8u171-linux-x64.tar.gz
又是漫长的等待
暂停一下……
1.解压文件
tar -zxvf jdk-8u60-linux-x64.tar.gz
2.配置环境
vi /etc/profile
按i执行编辑
export JAVA_HOME=/root/jdk1.8.0_171
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
最后按ESC 然后输入:wq退出。
然后执行source /etc/profile重载配置文件。
配置环境完成
4.开始配置hadoop
4.1解压
tar -zxvf hadoop-2.10.0.tar.gz //刚才的命令不对。。。
4.2 检查是否可用
./bin/hadoop version # 查看hadoop版本信息,成功显示则安装成功
出现上述信息代表文件是可用的。。。。。。
4.3 修改配置文件配置hadoop的Java环境
这里我们需要指明,不能用这种,会提示找不到java环境。
配置成这样
然后老规矩,按住esc,输入:wq退出vi且保存。
4.4 修改core-site和hdfs-site文件
core-site修改如下
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/root/hadoop-2.10.0/tmp</value>
<description>Abase for other temporary directories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
hdfs-site修改如下
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/root/hadoop-2.10.0/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/root/hadoop-2.10.0/tmp/dfs/data</value>
</property>
</configuration>
照着改即可。
4.5 初始化节点
./bin/hdfs namenode -format
此时会出现
20/05/11 22:42:18 WARN net.DNS: Unable to determine address of the host-falling back to "localhost" address
java.net.UnknownHostException: iZ2ze2wduzi6txmep99j17Z: iZ2ze2wduzi6txmep99j17Z: Name or service not known
at java.net.InetAddress.getLocalHost(InetAddress.java:1505)
at org.apache.hadoop.net.DNS.resolveLocalHostIPAddress(DNS.java:307)
at org.apache.hadoop.net.DNS.<clinit>(DNS.java:62)
at org.apache.hadoop.hdfs.server.namenode.NNStorage.newBlockPoolID(NNStorage.java:989)
at org.apache.hadoop.hdfs.server.namenode.NNStorage.newNamespaceInfo(NNStorage.java:598)
at org.apache.hadoop.hdfs.server.namenode.FSImage.format(FSImage.java:181)
at org.apache.hadoop.hdfs.server.namenode.NameNode.format(NameNode.java:1211)
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1655)
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1782)
Caused by: java.net.UnknownHostException: iZ2ze2wduzi6txmep99j17Z: Name or service not known
at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323)
at java.net.InetAddress.getLocalHost(InetAddress.java:1500)
... 8 more
这是阿里云的问题。我们需要修改host文件
vi /etc/hosts
加入
127.0.0.1 iZ2ze2wduzi6txmep99j17Z: iZ2ze2wduzi6txmep99j17Z iZ2ze2wduzi6txmep99j17Z
完成,老规矩退出方法。
reboot重启
出现
代表初始化成功。
最后一步启动hadoop
输入命令
./sbin/start-dfs.sh
这里提示输入密码,是不行的。我们还要配置一个免密登录。
4.6 安装SSH免密登录
sudo apt-get update #第一步
sudo apt-get install ssh #第二步
sudo apt-get install pdsh #第三步
#生成授权
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys #加入授权
chmod 0600 ~/.ssh/authorized_keys #啥意思?
出现如下界面代表已经免密登录已经配置完成了。
4.7 再次尝试
输入指令:./sbin/start-dfs.sh #start-dfs.sh是个完整的可执行文件,中间没有空格
查看是否启动成功
已经启动完成了,到此为止完成了Hadoop的配置操作。
5.最后结果
输入jps看到上述四个即完成启动。