背景
使用sqoop從mysql導數據到hive,從本地服務器是可以訪問mysql的(本地服務器是hadoop集群的一個datanode),但是sqoop導數據的時候依然連接不上mysql
報錯如下:

從報錯可以看出,是數據庫連接失敗,很常見的問題,但是從本地是可以直連mysql的。
因為sqoop導數據的時候,默認會啟動4個map task,這4個map task會隨機啟動在不動的datanode上,所以在想,是不是因為其他節點沒有權限訪問mysql導致。
但是需要先搞清楚,sqoop在抽取數據的時候,是不是會把4個map task隨機啟動在不動的datanode上
在官網上有如下內容:

雖然講的不是我們要找到,但是可以判斷出,sqoop導數據就是會把maptask隨機啟動在不通的datanode上。
因此,sqoop在導數據到mysql的時候,要確認,hadoop集群的每個節點都要有mysql的讀權限
