Ubuntu22系统部署Hadoop3.3.6环境
看boss有招大数据的讲师,好奇看了下,现在大学都讲大数据了,现在是越来越普及。昨天弄了一个云服务器部署了下Hadoop,虽然也是参考网上教程部署,但过程中还是出了不少问题。想着把部署过程完整记录下,所以我就把部署好的实例释放了又实例化了一台新的云服务器重新部署了下,如果是在我本地安装报错了还得重新安装那就耗时耗力,云服务器直接释放就好了。主要参考文档:https://zhuanlan.zhihu.com/p/503707617。
一、系统软件
Ubuntu 22.04 64位 Hadoop 3.3.6 Java 8
二、更新系统软件
sudo apt-get update
三、安装 ssh 和 ssh 服务器
sudo apt-get install openssh-server
四、检查ssh是否安装成功
ps -e|grep ssh
五、安装pdsh
sudo apt-get install pdsh
六、在/etc/profile和文件下增加下面代码
export PDSH_RCMD_TYPE=ssh
七、配置 ssh 密钥
命令行输入下面代码
ssh-keygen -t rsa -P ""
八、生成的密钥拷贝到授权文件中
可以看到密钥这些保存的位置在/root下面,跳转到/root目录下,输入ls -a可以看到.ssh文件
在.ssh目录下执行命令cat id_rsa.pub >>authorized_keys
九、检验ssh
ssh localhost
十、安装Java
sudo apt-get install openjdk-8-jdk
安装 Java 8后检测下版本java -version,然后在可以检查下java home的路径,在本机java home为/usr/lib/jvm/java-1.8.0-openjdk-amd64
十一、下载Hadoop并解压
这里我是在我本地下载好通过xftp上传到云服务器上,然后再解压修改名称。
在/home目录下新建Hadoop目录,下载hadoop压缩包,xftp上传到/home/Hadoop,
然后解压tar xzf hadoop-3.3.6.tar.gz,解压后使用mv hadoop-3.3.6 hadoop修改文件夹名改为hadoop,hadoop安装目录如下图所示。
十二.配置JAVA_HOME
在/home/Hadoop/hadoop/etc/hadoop目录下找到hadoop-env.sh,vim hadoop-env.sh,配置java home:/usr/lib/jvm/java-1.8.0-openjdk-amd64,如下图可以看到
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64。注意加export,不然后面提示找不到Java home。
十三、修改core-site.xml
在/home/Hadoop/hadoop/etc/hadoop目录下,vim core-site.xml,修改core-site.xml增加配置
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/Hadoop/hadooptest/hdata</value> </property> </configuration>
十四、修改hdfs-site.xml
在/home/Hadoop/hadoop/etc/hadoop目录下,vim hdfs-site.xml,修改hdfs-site.xml增加配置
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
十五、修改mapred-site.xml
在/home/Hadoop/hadoop/etc/hadoop目录下,vim mapred-site.xml,修改mapred-site.xml增加配置,注意下面路径,配置的是hadoop的安装目录
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>yarn.app.mapreduce.am.env</name> <value>HADOOP_MAPRED_HOME=/home/Hadoop/hadoop</value> </property> <property> <name>mapreduce.map.env</name> <value>HADOOP_MAPRED_HOME=/home/Hadoop/hadoop</value> </property> <property> <name>mapreduce.reduce.env</name> <value>HADOOP_MAPRED_HOME=/home/Hadoop/hadoop</value> </property> </configuration>
十六、修改yarn-site.xml
在/home/Hadoop/hadoop/etc/hadoop目录下,vim yarn-site.xml,修改yarn-site.xml增加配置
<configuration> <!-- 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> </configuration>
十七、修改bash.bashrc文件
在系统/etc目录下找到bash.bashrc,vim bash.bashrc,增加如下配置,然后使用source bash.bashrc使其生效
export HADOOP_HOME="/home/Hadoop/hadoop" export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin export HADOOP_MAPRED_HOME=${HADOOP_HOME} export HADOOP_COMMON_HOME=${HADOOP_HOME} export HADOOP_HDFS_HOME=${HADOOP_HOME} export YARN_HOME=${HADOOP_HOME}
十八、格式化hdfs文件系统
hdfs namenode -format
我第一次安装的时候提示找不到hdfs命令,安装配置我也是参考的知乎https://zhuanlan.zhihu.com/p/503707617这篇文章,我第一次把export PDSH_RCMD_TYPE=ssh配置在了bash.bashrc文件下,没在/etc/profile文件配置,后来在/etc/profile配置后可以执行格式化命令了。这次部署未在bash.bashrc文件配置,只是在/etc/profile文件配置。
No command 'hdfs' found, did you mean: Command 'hfs' from package 'hfsutils-tcltk' (universe) Command 'hdfls' from package 'hdf4-tools' (universe) hdfs: command not found
十九、启动HDFS服务
在/home/Hadoop/hadoop/sbin目录下执行start-dfs.sh命令,报如下错误
网上搜的解决方法则需要在修改/home/Hadoop/hadoop/sbin下的4个文件:start-dfs.sh、stop-dfs.sh、start-yarn.sh、stop-yarn.sh或者在hadoop-env.sh增加配置。在4个文件增加配置我这边配置后无效,就改成了在hadoop-env.sh文件中增加配置
在start-dfs.sh、stop-dfs.sh两个文件中增加如下配置
HDFS_DATANODE_USER=root HADOOP_SECURE_DN_USER=hdfs HDFS_NAMENODE_USER=root HDFS_SECONDARYNAMENODE_USER=root
在start-yarn.sh、stop-yarn.sh两个文件中增加如下配置
YARN_RESOURCEMANAGER_USER=root HADOOP_SECURE_DN_USER=yarn YARN_NODEMANAGER_USER=root
最后改成在hadoop-env.sh文件中增加配置,重新执行start-dfs.sh命令,如下图则启动成功。
export HDFS_NAMENODE_USER=root export HDFS_DATANODE_USER=root export HDFS_SECONDARYNAMENODE_USER=root export YARN_RESOURCEMANAGER_USER=root export YARN_NODEMANAGER_USER=root
二十、浏览器输入url验证
在浏览器输入ip:9870验证是否成功。
二十一、启动yarn服务
在sbin目录下执行start-yarn.sh命令启动yarn服务。在浏览器输入ip:8088验证。
二十二、遇到的问题
1.删除文件报错: Permission denied: user=dr.who, access=WRITE, inode="/input":root:supergroup:drwxr-xr-x
解决方法:在hadoop目录找到etc/hadoop/core-site.xml,增加下面属性配置
<property> <name>hadoop.http.staticuser.user</name> <value>root</value> </property>
2.浏览器打开hdfs文件words.txt时报下面错误
Couldn't preview the file. NetworkError: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'http://izbp158j7mgbfo44t5den7z:9864/webhdfs/v1/input/words.txt?op=OPEN&namenoderpcaddress=localhost:9000&offset=0&_=1694319006465'.
解决方法:
1.在本地电脑C:\Windows\System32\drivers\etc下修改host文件,增加云服务器ip 服务器名映射。
120.26.86.118 izbp158j7mgbfo44t5den7z
2.在hadoop下面的etc目录找到 hdfs-site.xml,增加下面属性配置。
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
3.在云服务器/ect/hosts文件增加配置
120.26.86.118 iZbp158j7mgbfo44t5den7Z
4.保存后重启hadoop服务器。
下图可以看到打开words.txt里面的内容了。
二十三、测试
在二十二步骤中可以看到已把words.txt文件放到了hdfs的/input目录下,在云服务器中打开hadoop目录下的share目录,/home/Hadoop/hadoop/share,之后再下面目录找到mapreduce目录,具体目录为:/home/Hadoop/hadoop/share/hadoop/mapreduce,执行命令: hadoop jar hadoop-mapreduce-examples-3.3.6.jar wordcount /input /output,这里的/input /output为hdfs目录。执行后会出现下面的界面。
在浏览器中会显示output目录,打开目录下的part-r-00000文件可以看到统计的结果。
作者:社会主义接班人
出处:http://www.cnblogs.com/5ishare/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
如果文中有什么错误,欢迎指出。以免更多的人被误导。